none
Sql count birden fazla tablo RRS feed

  • 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
    12 Ağustos 2016 Cuma 16:56

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
    12 Ağustos 2016 Cuma 22:18

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

    12 Ağustos 2016 Cuma 19:35
  • 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

    Hocam 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

    12 Ağustos 2016 Cuma 20:09
  • 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
    12 Ağustos 2016 Cuma 22:18
  • 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

    Hocam çok teşekkür ederim, sayenizde sorunu çözdüm,çok sağolun
    12 Ağustos 2016 Cuma 23:25