EgorkZe
@EgorkZe
iOS (Swift), GoLang

Как выбрать самые часто упоминаемые тэги из базы данных с помощью SQL?

Добрый день!
У меня есть таблица в базе данных Tags в которой хранятся все теги(они уникальны, то есть нет две записи в этой таблице с одинаковым тегом)
Есть таблица Posts
Есть таблица Posts_Tags в которой пролинкованы теги и посты
например есть тэг #машина у которого id= 5
и в Post_Tags с этим тегом связаны посты с id=7 id=10 и так далее
Вот так
posts tags
7 ---------5
10--------5
20--------5

Я хочу выбрать все записи за последний час, в которых одни тэги упоминались чаще других.
Теоретически я могу выбрать из БД все тэги за последний час а потом в коде их отсортировать, но может есть способ проще? Подскажите примерно как я могу это реализовать?
  • Вопрос задан
  • 623 просмотра
Решения вопроса 2
k1lex
@k1lex
Программист торг. сети. C# (WPF, WinForms), T-SQL
select 
top 100
tags,
COUNTposts  
from 
(
select  tags, COUNT( posts ) as COUNTposts 
from  Posts_Tags
where  (указываешь диапазон времени)
group by tags
) x
order by COUNTposts


Либо убираешь top 100 и пишешь условие для выборки.
Можно конечно через HAVING еще упростить. Но не знаю есть ли он на MySQL и Postgresql...
Ответ написан
Комментировать
@nozzy
Symfony, Laravel, SQL
select 
p.id,
t.tags,
t.count_tags
from Posts p
inner join 
(
  select 
  posts,
  tags,
  count(tags) as count_tags
  from Posts_Tags 
  group by posts, tags	
) t on t.posts = p.id
where p.date = (за последний час)
order by t.count_tags, p.id
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы