merhabalar .
üzerinde çalıştığım yeni projemde sql sorunu yaşıyorum.
konuyu açıklayacak olursak :
veri tabanında yorumlar ve isimler diye iki tablom var .
isimler tablosu şu şekilde :
+-----+-------+-------+------------+------------+-----------+----------+--------+----------+-------|
|--------------------------------------------|isimler|--------------------------------------------|
+-----+-------+-------+------------+------------+-----------+----------+--------+----------+-------|
| iid | isim |
+-----+-------+-------+------------+------------+-----------+----------+--------+----------+-------|
| 1 | mehmet |
| 3 | ali |
yorumlar tablosu şu şekilde :
+-----+-------+-------+------------+------------+-----------+----------+--------+----------+-------|
|--------------------------------------------|yorumlar|--------------------------------------------|
+-----+-------+-------+------------+------------+-----------+----------+--------+----------+-------|
|yid| iid | yorum |
+-----+-------+-------+------------+------------+-----------+----------+--------+----------+-------|
|56 | 1 | yorumlardan biri |
|57 | 3 | baska bir yorum |
|57 | 1 | dahada baska bir yorum |
yid=yorum id
iid= isim id
yorum = yorumlar
şimdi şöle bişey yapmak istiyorum :
en çok yorum yazılan 10 isimi alt alta dizmek :
yani şu şekilde:
mehmet (2)
ali (1)
en çok yorum alanı en üste almalı ve parantez içerisinde yorum sayısını yazmalı.
bu konuda bir çalışma yaptım her isime parantez içerisinde kaç tane yorum olduğunu yazıyorum ama bu isimleri parantez içerisindeki rakamın büyükten küçüğe doğru sıralayamıyorum.
yani sıralama yorum sayısına göre olmuyor isime göre oluyor :
kullandığım kodlar aşağıdaki gibi...
<? $sql6= "SELECT * FROM isimler ORDER BY fadi ASC";
$Calistirlistele6 = mysql_query ($sql6); while(list($v_fid1,$v_fadi1,$v_adres1,$v_ftelefon1 ,$v_kateid1,$v_yetkili1,$v_ykadi1,$v_ysifre1)=mysq l_fetch_array($Calistirlistele6))
{ ?>
<lii> <a style='text-decoration: none' href="isimincele.php?iid=<? print $v_fid1; ?>"><? print $v_fadi1; ?>(<? $sql3= "SELECT COUNT(*) FROM yorumlar WHERE fid='$v_fid1' and durum='Onayli' ";
$Calistirlistele3 = mysql_query ($sql3);
while(list($veri3)=mysql_fetch_array($Calistirlist ele3))
print $veri3;?>)</a></lii><br>
<? } ?>
bu kodları nasıl düzenlersek istediğim gibi yaparız sıralamayı ? yorum sayısına göre sıralamalı.
yardımlarınız için tşkkr ederim.
sql sorusu...
1
●541
- 02-11-2007, 01:08:42Kimlik doğrulama veya yönetimden onay bekliyor.senin yazdığın kod, isimlere göre artan bir şekilde sıralar.Alexis adlı üyeden alıntı: mesajı görüntüle
arkadaşın istediği en çok yorum alan en üstte olmalı.
select CONCAT(ad, ' (',sayi , ') ') from (select distinct t1.isim as ad, (select count(wdp_yorumlar.yid) from wdp_yorumlar where t1.iid=wdp_yorumlar.iid) as sayi from wdp_isimler as t1 LEFT OUTER JOIN wdp_yorumlar as t2 on t1.iid=t2.iid) as newt order by sayi desc;
sadece bu sql kodu çalıştırman yeterli. çıktısı şuna benzer birşey vercek:
mehmet (95)
ahmet (88)
veli (72)
ayşe (65)
kolay gelsin.. tavsiyem biraz sql çalış.. sorunun olursa pmden ulaşabilirsin