2017-02-10 1 views
1

У меня есть две таблицы, «темы» (таблица A) и «голосование по темам» (таблица B). каждая «тема» имеет несколько «темных голосов». Мне нужно выбрать строки из «тем» и упорядочить их по общему числу связанных «тем голосов».заказать результаты из таблицы A по общему количеству связанных строк из таблицы B

как это возможно в sqlite? мне нужно создать представление для этого, или это можно решить с помощью JOIN?

ответ

1

Если вам не нужны голоса, вы можете просто поставить коррелировать запрос в order by:

select t.* 
from topics t 
order by (select count(*) from topic_votes tv where t.topic = v.topic) desc; 

Как правило, вы хотели бы, чтобы количество голосов в наборе результатов, а также. Простой способ для перемещения подзапроса к select пункту:

select t.*, 
     (select count(*) from topic_votes tv where t.topic = v.topic 
     ) as votes 
from topics t 
order by votes desc; 
0

Предполагая, что у вас есть PK идентификатор в topics таблице и FK topic_id в topic votes таблицы:

select 
    t.* 
from topics t 
left join topic_votes v on t.id = v.topic_id 
group by t.id 
order by count(v.topic_id) desc; 

 Смежные вопросы

  • Нет связанных вопросов^_^