2010-11-19 17 views
0

SQL için yeni bir bilgim var ve bu sorunun çözümünü bulamıyorum. İki masam var. Tablo A'da, her biri benzersiz bir kimliği olan çok sayıda yorum saklıyorum.MySQL, Başka bir tabloda en sık girilen satırları seçmem gerekiyor

Tablo B'de, her yoruma (datetime gibi = 1 ve dislike = 0) her bir kaydı saklıyorum. Her oy için bir giriş olacak, bu yüzden tablo A'daki her yorum için tonlarca satır olacaktır.

Tüm yorumları almam ve haftalık en çok okunan yorumların en üstte olduğu şekilde sıralamalıyım. Nasıl emin değilim.

SELECT * FROM comment INNER JOIN logs ON comment.c_id=logs.c_id WHERE logs.daterate >= DATE_SUB(CURDATE(), INTERVAL 8 DAY) AND logs.rated=1 

netleştirmek için, ben geçen hafta puan = 1 ile günlüklerinden tüm girdileri almak ve en göre sıralamak gerekir: Burada

Bugüne kadar var, ama devam etmek nasıl emin ne sık sık azalan sırayla c_id ve her satır için ayrı bir c_id olsun ... bu mantıklıysa eğer bu mantıklıysa

Lütfen yeterince açıklamamış olursanız soru sorun.

cevap

1
SELECT * 
     FROM comment 
INNER JOIN (SELECT comment.c_id, 
        COUNT(*) AS cnt 
       FROM comment 
     INNER JOIN logs ON comment.c_id=logs.c_id 
      WHERE logs.daterate >= DATE_SUB(CURDATE(), INTERVAL 8 DAY) 
       AND logs.rated=1 
      GROUP BY comment.c_id) x ON x.c_id = comment.c_id 
    ORDER BY x.cnt DESC 
+0

fazladan virgül eklendi: sabit, teşekkürler – Unreason

+0

@Unreason'dan – zerkms

+0

harika, çok teşekkürler! – Cody

-1

bu deneyin -

İlk 1 puan ile güncel tarihten 7 gün ve ayrıca c_id deyince göre sıralanır olan günlükleri tablodan tüm kayıtları sorguladıktan. Daha sonra bu Comments tablosu ile katıldı.

SELECT Comment.* FROM comment C 
INNER JOIN (SELECT logs.c_id as c_id,count(logs.c_id) as logcount FROM logs 
WHERE logs.rated=1 
AND logs.daterate BETWEEN GETDATE() AND DATEADD(day,-7,getdate()) 
Group by logs.c_id 
order by count(logs.c_id) desc) X 

ON C.c_id = X.c_id 
ORDER BY X.logcount DESC 
+0

-1 bu sql-server değil mysql etikettir; 'count()' gereksinimi standart olarak uyumlu SQL – Unreason

+0

düzenlenmiştir. Teşekkürler. – pavanred

İlgili konular