En iyi yanıtlayıcılar
Sql count birden fazla tablo

Soru
-
Merhaba arkadaşlar,
Üst resimdeki gibi 3 tablom var
Birincisinden yetkili bilgilerini tutuyorum
İkincisinde bu yetkililerin rol isimlerini
Üçüncü tabloda atamaları tutuyorum
3.tablodan anlaşılacağı üzere bir yetkiliye birden fazla atama yapılabiliyor
Burada 3 tabloyu birleştirip tek çıktı elde etmem gerekiyor,2 tabloda bilgilerini alıyorum sorunsuz ancak 3. tabloda hangi yetkiliye toplam kaç atama yapılmış satır satır almam gerekiyor
Yardımlarınızı rica ederim
Teşekkürler
2 tablodan aldığım sonuçlar için şu kod çalışıyor
SELECT y.adi,rol.rol,y.seviye,Y.tcno, y.id as kullid,Y.seviye,Y.id,Y.durum as userdurum from Roller rol, Users Y WHERE rol.id=y.rol and y.durum <>5
Örnek çıktı şöyle olmalı
Yetkililer.adi,Roller.roladi,Atamalar.yetkiliyeatananfirmasayisi
- Düzenleyen muratdemir31 12 Ağustos 2016 Cuma 17:35 eksik bilgi
Yanıtlar
-
Tekrar merhabalar,
Bu durumda sizin Roller ve Yetkililer tablolarınız arasında var olan bağlantıdan zaten yetkili ve rol bilgilerini getirebiliyorsunuz. Sizin ihtiyacınız ilgili yetkili kaç firmada atandı bilgisini saymaksa eğer GROUP BY ile gruplayıp saydırabilirsiniz. Aşağıdaki kod yapısını sizin ilgili yapıya uyarlayarak deneyebilir misiniz?
Select y.yetkili_adi, r.rol_adi, COUNT(*) as adet from Roller as r inner join Yetkililer as y on r.rol_id = y.rol_id inner join Atamalar as a on a.yetkili_id = y.yetkili_id Group By y.yetkili_adi, r.rol_adi
Eğer firma bazlı gruplatıp saydırmak isterseniz Group By içinde firma_id ye göre gruplayıp Select içinde onu saydırarak deneyebilirsiniz.
Umarım bu sefer doğru anlamışımdır :)
Umarım faydalı olur...
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
www.abdullahaltintas.com- Yanıt Olarak İşaretleyen muratdemir31 12 Ağustos 2016 Cuma 23:25
Tüm Yanıtlar
-
Merhabalar,
Eğer doğru anladıysam bir yetkili birden fazla role sahip olabiliyor ve bir rolde birden fazla yetkili olabiliyor. Doğru mudur? Eğer bu şekildeyse Atamalar tablonuz many to many ilişki çeşidi ile bağlanmalıdır ve ara tablonuz olmalıdır. Bu durumda Atamalar tablonuzda Yetkili_id ve Rol_id foreign key olarak bağlayabilirsiniz.
Bu şekilde tasarımınızı yaptıktan sonra istediğiniz sonucu elde etmek için aşağıdaki gibi bir sorguyu çalıştırabilirsiniz:
select y.yetkiliadi, r.roladi, a.firmabilgisi from yetkili as y inner join atamalar as a on y.yetkili_id = a_yetkili_id inner join roller as r on r.rol_id = a.rol_id
Umarım faydalı olur...
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
www.abdullahaltintas.com -
Merhabalar,
Eğer doğru anladıysam bir yetkili birden fazla role sahip olabiliyor ve bir rolde birden fazla yetkili olabiliyor. Doğru mudur? Eğer bu şekildeyse Atamalar tablonuz many to many ilişki çeşidi ile bağlanmalıdır ve ara tablonuz olmalıdır. Bu durumda Atamalar tablonuzda Yetkili_id ve Rol_id foreign key olarak bağlayabilirsiniz.
Bu şekilde tasarımınızı yaptıktan sonra istediğiniz sonucu elde etmek için aşağıdaki gibi bir sorguyu çalıştırabilirsiniz:
select y.yetkiliadi, r.roladi, a.firmabilgisi from yetkili as y inner join atamalar as a on y.yetkili_id = a_yetkili_id inner join roller as r on r.rol_id = a.rol_id
Umarım faydalı olur...
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
www.abdullahaltintas.comHocam kusura bakmayın eksik bilgi vermişim;
Şöyle ki roller tablosunda sadece 4 tane rol var rollerin isimlerini tutuyorum yetkililer tablosundaki üyenin rolid si ile rol tablosunu karşılaştırıp editör,admin,yazar 'mı diye ulaşıyorum
Atamalar tablosundaki durum da şöyle bir firmaya birden fazla yetkli atanıyor ben de bunların sayısını almak istiyorum
örneğin Ali a firmasına da atanmış olabilir B firmasına da bu atamalar da atamalar tablosundan alıyorum
-
Tekrar merhabalar,
Bu durumda sizin Roller ve Yetkililer tablolarınız arasında var olan bağlantıdan zaten yetkili ve rol bilgilerini getirebiliyorsunuz. Sizin ihtiyacınız ilgili yetkili kaç firmada atandı bilgisini saymaksa eğer GROUP BY ile gruplayıp saydırabilirsiniz. Aşağıdaki kod yapısını sizin ilgili yapıya uyarlayarak deneyebilir misiniz?
Select y.yetkili_adi, r.rol_adi, COUNT(*) as adet from Roller as r inner join Yetkililer as y on r.rol_id = y.rol_id inner join Atamalar as a on a.yetkili_id = y.yetkili_id Group By y.yetkili_adi, r.rol_adi
Eğer firma bazlı gruplatıp saydırmak isterseniz Group By içinde firma_id ye göre gruplayıp Select içinde onu saydırarak deneyebilirsiniz.
Umarım bu sefer doğru anlamışımdır :)
Umarım faydalı olur...
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
www.abdullahaltintas.com- Yanıt Olarak İşaretleyen muratdemir31 12 Ağustos 2016 Cuma 23:25
-
Tekrar merhabalar,
Bu durumda sizin Roller ve Yetkililer tablolarınız arasında var olan bağlantıdan zaten yetkili ve rol bilgilerini getirebiliyorsunuz. Sizin ihtiyacınız ilgili yetkili kaç firmada atandı bilgisini saymaksa eğer GROUP BY ile gruplayıp saydırabilirsiniz. Aşağıdaki kod yapısını sizin ilgili yapıya uyarlayarak deneyebilir misiniz?
Select y.yetkili_adi, r.rol_adi, COUNT(*) as adet from Roller as r inner join Yetkililer as y on r.rol_id = y.rol_id inner join Atamalar as a on a.yetkili_id = y.yetkili_id Group By y.yetkili_adi, r.rol_adi
Eğer firma bazlı gruplatıp saydırmak isterseniz Group By içinde firma_id ye göre gruplayıp Select içinde onu saydırarak deneyebilirsiniz.
Umarım bu sefer doğru anlamışımdır :)
Umarım faydalı olur...
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
www.abdullahaltintas.com