Определение популярных тегов с помощью MySQL? - PullRequest
2 голосов
/ 29 января 2011

У меня есть две таблицы:

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

Я хочу получить самые популярные теги из таблицы сообщений, использовавшейся за последние 12 часов.

¿Как мне этого добиться?
Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 января 2011

Я думаю, что это должно работать:

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 голосов
/ 29 января 2011

Чтобы получить самые популярные теги в порядке убывания за последние 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...