В прошлом я создавал сайты со сложными запросами (для меня в любом случае), но я решил, что из-за того, как я программирую, я должен подготовить запросы к БД, которые мне нужны, прежде чем создавать свой сайт.Таким образом, я могу избежать реструктуризации и т. Д., Но у меня нет реальных данных для игры.Итак, на моем сайте будет размещен пользователь.Этот пост может быть повторно опубликован любым другим пользователем.Мне нужно получить топ-5 сообщений от каждого тега в зависимости от того, сколько раз он был повторно опубликован.Таким образом, если тег «бейсбол» был, и 3000 пользователей имели сообщение с этим тегом, мне нужно получить 5 лучших, которые были переизданы.Структура:
POSTS
-post_id
-member_id
-tag
-title
-post
-date_posted
-is_active
TRICKLES
-post_id
-member_id
-date_trickled
У меня есть этот запрос, я думаю, что он идет вразрез ...
select p.post_id, p.tag, p.title, count(p.post_id) from (
select * from posts p inner join
trickles t on t.post_id=p.post_id
group by p.tag order by count(p.post_id) desc limit 5
) order by p.tag asc
Для меня это говорит.Сначала (внутренний запрос) получите все посты и связанный с ними ручеек (перепубликуйте) и сгруппируйте их по тегу, затем упорядочите по верхнему количеству постов и ограничьте его до 5. Затем получите идентификатор, тег, заголовок, количество (общее количество раз, когда этот пост был зачеркнут), и упорядочить его в алфавитном порядке по тегу
. Я думаю, что это даст мне 5 лучших треклов на группу в базе данных, но мне сложно это понять, без фактическогоданные, и я не буду, пока люди не присоединятся и не начнут отправлять сообщения.Каждый раз, когда я глубоко задумываюсь об этом, я чувствую, что мой разум перепутан.Исходя из того, что я сказал, получит ли этот запрос 5 повторных публикаций по каждому общему «тегу» в БД?Я ценю это заранее!