2010-04-26 14 views
6

Her birinde bir sütun ile ilgili her biri bir sütun ile 3 tablo var. Son 24 saatte (86400 saniye) herhangi bir satır için tüm 3 tabloları kontrol edecek bir sql deyimi sorgusu arıyorum Ben sütunlar time altında her tablolarda zaman damgaları depoladı.Karmaşık SQL sorgusu ... 3 tablo ve son 24 saat içinde zaman damgası kullanarak en popüler gerekir

Bu sorguyu aldıktan sonra, daha sonra kimliğin en çok kaçının yeniden ortaya çıktığını görmek için sonraki adımı yapabileceğim, böylece dizideki en popüler dizilere göre sıralayabiliyorum ve ilk 5 ile sınırlayabileceğim ...

Herhangi bir fikir kabul edilir! :)

Önceden teşekkürler.

Stefan

cevap

10
SELECT id, COUNT(*) AS cnt 
FROM (
     SELECT id 
     FROM table1 
     WHERE time >= NOW() - INTERVAL 1 DAY 
     UNION ALL 
     SELECT id 
     FROM table2 
     WHERE time >= NOW() - INTERVAL 1 DAY 
     UNION ALL 
     SELECT id 
     FROM table3 
     WHERE time >= NOW() - INTERVAL 1 DAY 
     ) q 
GROUP BY 
     id 
ORDER BY 
     cnt DESC 
LIMIT 5 
+1

Yok artık. MySQL ninjalarını duydum ama hiç tanışmadığımı sanmıyorum. – dclowd9901

+0

Sadece bunu test ediyor :) İki saniye! –

+0

Herhangi bir hata vermedi ama ben hiç sonuç alamıyorum? Her bir tabloda zaman damgasına zaman damgasını depolamak için php time() işlevini kullanıyorum ... hmmm herhangi bir fikir mi? Tekrar teşekkürler! Bu sorgu kısaca, son 24 saat içinde en sık karşılaşılan zaman damgasının zaman damgasıyla ilişkili olduğunu ve ardından en üstteki 5 değeri döndüreceğini sayacaktır. –

İlgili konular