У меня есть небольшая проблема с расширенным запросом, с которым я изо всех сил пытаюсь разобраться.COUNT() с нулями, внутри подзапроса
Существенно, что в таблице голосов есть голоса, соответствующие данному саундтреку. Мой запрос должен получить звание саундтрека на основе голосов, которые он получил.
Мой подход ниже работает очень хорошо, когда в таблице присутствуют голоса, но ранг присваивается значение NULL
, когда его нет.
Вот запрос:
SELECT soundtrack.*,
(SELECT WrappedQuery.rank
FROM (SELECT @rownum := @rownum + 1 AS rank,
prequery.soundtrack_id
FROM (SELECT @rownum := 0) sqlvars,
(SELECT Count(*),
soundtrack_id
FROM vote
GROUP BY vote.soundtrack_id
ORDER BY Count(*) DESC) prequery) WrappedQuery
WHERE WrappedQuery.soundtrack_id = soundtrack.id) AS rank
FROM soundtrack
WHERE soundtrack.id = 33
AND live = 1
ORDER BY rank ASC
У меня есть чувство, проблема должна сделать с (SELECT COUNT(*))
части, но все, что я пытался до сих пор не получается.
Надеясь, что кто-то может пролить свет на мою проблему.
EDIT Вот SQLFiddle http://www.sqlfiddle.com/#!2/c8db2/2/0
Я не пробовал это, но я имел эту идею без схемы .... – jaczes
что работал с небольшим изменением. См. Мой вопрос. Спасибо. – freshnode
Я боялся, что я ошибся, кто-то еще работал над данными и проголосовал, заставив запрос работать. Кто-нибудь еще? – freshnode