Mysql'de Kullanıcıları Konu Sayılarına Göre Listeleme

Cryptograph 07.05.201315:03 PHP & MySQL 8014    
Facebookta Paylaş

İki farklı tablomuz var, birinde açılan konular, diğerinde ise kullanıcılar.
Sistemde hangi kullanıcı konu açıyorsa o kullanıcının id bilgisi de konuların bulunduğu tabloda tutuluyor.
Konular Tablosunda
id, baslik, icerik, yayin, kullanici_id alanları var
Kullanıcılar Tablosunda
k_id, kullanici_adi, sifre, yetki alanları var

Biz yetki durumu 1,2 ve 3 olan kullanıcıları yayında bulunan konu sayılarına göre konu sayısı en fazla olan en üstte çıkacak şekilde göstermek istiyoruz.

Ben bunu çok uzun bir yöntemle yapmıştım, konuların bulunduğu yerden kullanıcı idlerini ve o kullanıcıların konu sayılarını ayrı ayrı alıp dizi değişkenine atayıp sıralayıp foreach ile döngüye sokup o şekilde sadece üç kullanıcı gelecek şekilde uzun sorgular topluğu şeklinde yapmıştım, daha kısa bir yöntem arıyordum ve Kerim Yılmaz (Ayazoğlu) kardeşim sayesinde çözdüm.

Tek bir sql sorgusu

 
 select distinct(b.kullanici_id),k.kullanici_adi, (select count(id) from konular where kullanici_id=k.p_id) as toplam from kullanicilar kinner join konular b on b.kullanici_id=k.k_id where b.yayin=1 and k.yetki=1 or k.yetki=2 or k.yetki=3 order by toplam desc limit 3 
 
sorguyu şu şekilde açıklayayım, tablo ilişkilendirmesi yaptık, bu konuda anlatmıştım tablo ilişkilendirmeyi, distinct ile veriyi tekrarsız çekiyoruz.
Konular tablosunda konusu olan kullanıcıları seçmiş olduk, ekran yazdırmak istediğimiz alanları seçtik sadece veritabanından, kullanici_adi, konu sayıları ve kullanıcı idleri.
select işlemi yaparken içerde parantez içinde bir select sorgusu daha kullandık, bura da count ile konuların sayılarını aldık ve hangi kullanıcının konu sayısını alacağımızı where koşuluyla belirttik daha sonra aldığımız bu sayıları toplam isimli bir alana aktardık ve toplam alanındaki değere göre tersten sıralayarak sadece 3 kişi gelecek şekilde kişileri seçmiş olduk.
sorguyu phpMyAdmin de çalıştırınca resimdeki gibi bir sonuç getiriyor:
Mysql de kullanıcıları konu sayılarına göre listeleme

Okuyucu Yorumları (0 Yorum)

Söz Sırası Sizde

​​​​​​​​​​​​​​​​​​​​​​​​​

MERAK EDİLENLER

İLETİŞİM

  • alpay[at]cryptograph.gen.tr
  • İstanbul ikametgah