頭を悩ませている高度なクエリに少し問題があります。
基本的に、特定のサウンドトラックに対応する投票テーブルに投票があります。私のクエリは、与えられた投票に基づいてサウンドトラックのランクを取得する必要があります。
以下の私のアプローチは、テーブルに投票がある場合は問題なく機能しますが、投票がない場合はランクに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(*))
これまでに試したことはすべてうまくいきません.
誰かが私の問題に光を当ててくれることを願っています。
編集 これがSQLFiddle http://www.sqlfiddle.com/#!2/c8db2/2/0です