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