2014-01-21 6 views
2

Если у меня есть тип пост размещать какие hasMany голоса что выглядит somehting так:OrderBy сумма связанной таблицы

post: [id, title, content] 
votes: [my_vote, post_id, user_id] 

где my_vote можно сказать, -1, 0 или 1.

Как я могу перечислить все сообщения, упорядоченные по сумме my_vote? Могу ли я сделать это красноречиво или мне нужно свободно использовать JOINS? Я хочу сделать что-то вроде

->orderBy(sum("votes-for-the-idea")) 

Также мне по-прежнему необходимо получить доступ к отдельным голосам (в частности, к голосам текущего пользователя).

+0

Отличный вопрос, мне тоже интересно. – BenjaminRH

ответ

0
select post.*, 
sum(votes.my_vote) as vote_num, 
count(distinct votes.user_id) as user_vote_num 
from post 
left join votes 
on post.id = votes.post_id 
group by post.id 
order by vote_num desc 
Смежные вопросы