En iyi yanıtlayıcılar
sql en çok yorum alan

Soru
-
Merhaba arkadaşlar sorunum şu:
veri tabanında 3 adet tablom mevcut (news, comment ve categories)
yazmak istediğim sorgu şu :
kendi kategorisinden en çok yorum alan haberleri getir.
benim yazdığım sorgu ise şu şekilde:
SELECT top 4 haber_ID, COUNT( haber_ID ) as kayitsayisi FROM comment C inner join news N on N.ID=C.haber_ID inner join categories Cat on N.hbr_kategori=Cat.kategori_ID where Cat.kategori_adi='sektörel' GROUP BY haber_ID order by kayitsayisi desc
sorgu sonucunda 'sektörel' kategorisinde en çok yorum alan ilk 4 haberi görebiliyorum ama bu haberlerin yalnızca haber_ID'lerine erişebiliyorum. Ama ben diğer bilgilere de erişmek istiyorum. 'news' tablosundaki 'hbr_baslik' gibi
sorguyu ;
SELECT top 4 haber_ID, N.hbr_baslik FROM comment C inner join news N on N.ID=C.haber_ID inner join categories Cat on N.hbr_kategori=Cat.kategori_ID where Cat.kategori_adi='sektörel' GROUP BY haber_ID order by COUNT( haber_ID )desc
şeklinde değiştirdiğimde ise şu hatayı alıyorum;
Column 'news.hbr_baslik' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
umarım sorunumu anlatabilmişimdir.
Teşekkür ederim .
Yanıtlar
-
Goruntu yerine data versen daha iyiydi ya neyse :)
SELECT tmp.sayi, news.* FROM news INNER join (SELECT TOP 4 haber_ID, COUNT(haber_ID) AS sayi FROM comment C INNER JOIN news N ON N.ID = C.haber_ID INNER JOIN categories Cat ON N.hbr_kategori = Cat.kategori_ID WHERE Cat.kategori_adi = 'sektörel' GROUP BY haber_ID ORDER BY COUNT(haber_ID) DESC) tmp ON [tmp].haber_id = news.ID ORDER BY tmp.sayi DESC
- Yanıt Olarak İşaretleyen furkan.kaya 20 Ağustos 2014 Çarşamba 16:54
Tüm Yanıtlar
-
SELECT * FROM news WHERE news.ID in
(SELECT TOP 4 haber_ID FROM comment C INNER JOIN news N ON N.ID = C.haber_ID INNER JOIN categories Cat ON N.hbr_kategori = Cat.kategori_ID WHERE Cat.kategori_adi = 'sektörel' GROUP BY haber_ID ORDER BY COUNT(haber_ID) DESC)
- Düzenleyen CetinBasoz 20 Ağustos 2014 Çarşamba 14:15
- Yanıt Olarak İşaretleyen furkan.kaya 20 Ağustos 2014 Çarşamba 14:21
- Yanıt İşaretini Geri Alan furkan.kaya 20 Ağustos 2014 Çarşamba 14:32
- Yanıt Olarak İşaretleyen furkan.kaya 20 Ağustos 2014 Çarşamba 14:33
- Yanıt İşaretini Geri Alan furkan.kaya 20 Ağustos 2014 Çarşamba 15:18
-
-
-
Goruntu yerine data versen daha iyiydi ya neyse :)
SELECT tmp.sayi, news.* FROM news INNER join (SELECT TOP 4 haber_ID, COUNT(haber_ID) AS sayi FROM comment C INNER JOIN news N ON N.ID = C.haber_ID INNER JOIN categories Cat ON N.hbr_kategori = Cat.kategori_ID WHERE Cat.kategori_adi = 'sektörel' GROUP BY haber_ID ORDER BY COUNT(haber_ID) DESC) tmp ON [tmp].haber_id = news.ID ORDER BY tmp.sayi DESC
- Yanıt Olarak İşaretleyen furkan.kaya 20 Ağustos 2014 Çarşamba 16:54
-