MySQL ile birden fazla tabloda birden fazla COUNT hesabı

MySQL veritabanı ile çalışıyorsanız, geliştireceğiniz projelerde minimum veritabanı bağlantısı kurmalısınız. Ki böylece hızlı çalışan bir yazılım ya da betik yazmış olasınız. Bunu yapmanın tek yolu ise, tek bir sorgu ile alabileceğiniz verileri, birden fazla sorgu ile almamak 🙂

Basit olarak COUNT() hesabı

Örnek bir count() hesabı alttaki gibi.

[SQL]SELECT COUNT(ID) as toplam_marka FROM b_motor_marka[/SQL]

Böylece b_motor_marka tablosundaki veri adetini bulmuş oldum. Tabi bu gayet basit. Peki birden fazla tabloya bağlanıp, her birinden ayrı ayrı count() hesabı yapmak istersem?

Gelişmiş olarak COUNT() hesabı

İşte böyle bir durum için örnek bir kod size.

[SQL]
SELECT mm.ID, mm.ad as marka_ad, COUNT(DISTINCT mo.ID) as toplam_model, COUNT(DISTINCT um.ID) as toplam_uye
FROM b_motor_marka as mm
LEFT JOIN b_motor_model as mo ON mo.markaID=mm.ID
LEFT JOIN b_uye_motor as um ON um.markaID=mm.ID
GROUP BY mm.ID
[/SQL]

Yukarıda,

[SQL]COUNT(DISTINCT mo.ID) as toplam_model, COUNT(DISTINCT um.ID) as toplam_uye[/SQL]

Yerine,

[SQL]COUNT(mo.ID) as toplam_model, COUNT(um.ID) as toplam_uye[/SQL]

yazmış olsaydım, toplam_model ve toplam_uye değerleri birbirine eşit olacaktı. Bunları birbirinden ayırt etmek için başların DISTINCT ekledim ve istediğim sonucu ayrı ayrı ve tek bir sorgu ile elde ettim 😉