DMRY.NET’e Hoşgeldiniz
Nerdeyim? GirişMySQL › 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.

SELECT COUNT(ID) as toplam_marka FROM b_motor_marka

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.

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

Yukarıda,

COUNT(DISTINCT mo.ID) as toplam_model, COUNT(DISTINCT um.ID) as toplam_uye

Yerine,

COUNT(mo.ID) as toplam_model, COUNT(um.ID) as toplam_uye

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 ;)

Bu yazı 6 Ağustos 2008, 18:47 tarihinde yazılmış olup bu zamana kadar 280 kez görüntülenmiştir

Bu yazı 3 adet yorum almıştır ve bunların tamamı görüntülenmektedir.

#3 – 08 Ağustos 2008 , 18:01

Hayır, aksine gerek var, dikkatli oku Onur ;)

  • Yorumlar: 1180
  • İlk Yorum:
    16 Eki. 2005
#2 – 08 Ağustos 2008 , 17:47

onur

sadece DISTINCT’lere gerek olmadıgını yazmıssın ? ya da ben yorgunum ?

  • Yorumlar: 7
  • İlk Yorum:
    18 Ağu. 2007
#1 – 06 Ağustos 2008 , 21:55

İlk okuduğumda başım döndü :) sonradan kavradım. Harbiden ilaç gibi ama biraz baş döndürücü bir ilaç:)

  • Yorumlar: 57
  • İlk Yorum:
    01 Oca. 2006
YAZIYI BEĞENDİN Mİ?

Yazını çok beğendim. Yeni yazılarının e-posta adresime gelmesini istiyorum :)

Haberler RSS Yorumlar RSS

© 2009 Tüm hakları dmRy.net'e aittir.
Kullanım şartları yerine getirilmeden hiçbir şekilde kopyala-yapıştır yapılamaz, yazılar ve bilgiler kullanılamaz.