2011-01-28 45 views
2

我有兩個表:使用mysql確定流行標籤?

posts{id,post,tag_id,date} 
tags{id,tag,date} 

我想要從後表中最熱門的標籤,在最後12小時使用。

¿我該如何做到這一點?
謝謝。

+1

`tags`日期代表什麼? – sdleihssirhc 2011-01-28 23:41:35

+0

當標籤被創建!我更關心與郵政表中的日期,以獲得最新的12小時 – pingpong 2011-01-28 23:43:26

回答

2

我認爲這應該工作:

SELECT tags.tag, count(*) AS count 
    FROM posts INNER JOIN tags 
    ON (posts.tag_id = tags.id) 
    WHERE posts.date >= SUBTIME(NOW(), '12:00:00') 
    GROUP BY tags.id 
    ORDER BY count(*) DESC 

我有3個員額與'測試SQL'作爲標籤在12小時內創建,2個帖子以'PHP'作爲標籤,但只有其中一個在12小時內創建。然後上面的查詢返回:

tag count 
SQL 3 
PHP 1 
2

爲了獲得最熱門的標籤,從最後12小時降序排序,你可以這樣做:

SELECT tag 
FROM tags 
WHERE id IN (
    SELECT tag_id FROM posts WHERE date >= SUBTIME(NOW(), '12:00:00') 
) 
ORDER BY COUNT(id) DESC 
+0

#1305 - 功能kornar.SUB_TIME不存在:((感謝 – pingpong 2011-01-28 23:58:17