как написать этот sql - PullRequest
       4

как написать этот sql

0 голосов
/ 10 августа 2009

Я использую MySQL

есть две таблицы

голос

app_id user_id
2      1
3      1
2      2

Приложение

id title content
1  xx    xxxx   
2  yy    yyyy
3  zz    zzzz 

Я хочу отсортировать таблицу приложений по количеству голосов пользователей. в этом примере результат должен быть

id title content
2  yy    yyyy
3  zz    zzzz
1  xx    xxxx

есть предложения?

Ответы [ 2 ]

3 голосов
/ 10 августа 2009
select app.id, app.title, count(*) as votes
from app
left join vote on app.id = vote.app_id
group by app.id, app.title
order by votes desc

Если вы не хотите, чтобы в выводе было количество голосов, вы также можете сделать это (на сервере sql это возможно, поэтому я считаю, что это должно быть возможно и в mySql, но я не проверял) это так как у меня нет MySQL здесь).

select app.id, app.title
from app
left join vote on app.id = vote.app_id
group by app.id, app.title
order by count(*) desc
2 голосов
/ 10 августа 2009

Сгруппируйте данные из таблицы приложения, чтобы получить количество голосов, и используйте левое соединение в таблице голосования, чтобы также получить приложения без голосов:

select app.id, app.title, app.content
from app
left join vote on vote.app_id = app.id
group by app.id, app.title, app.content
order by count(vote.app_id) desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...