0

したがって、これが複数のテーブルで行われるのを見てきましたが、これが複数のテーブルでどのように機能するかについて混乱しています。トーナメントでの正しいエントリー数を選択したい。これは、ユーザーが何も権利を得ていない場合を除いて機能します。その後、NULL を返します。これを0に戻したい。

Table-tournament_entries

Column  
=============       
id      
tournament_id           
game_id 
user_id 
username    
prediction      
correct 

これが私が実行するクエリです。質問が正しくなかったユーザーも含めて、すべてのユーザーを返すことを望んでいます。

SELECT 
  tournament_id, username, user_id, COUNT(`prediction`)
FROM 
  tournament_entries
WHERE 
  correct = 1 AND tournament_id = 1
GROUP BY 
  username
ORDER BY 
  COUNT(`prediction`) DESC
LIMIT 0,10

編集:混乱して申し訳ありませんが、クエリを実行するとこれが表示されます

username    user_id     CorrectAns
mj          455              10
charlie     1                8
bill        2                8
doug        51               7

しかし、表示されていない、権利が 0 のユーザーがいます。提案されたクエリを実行すると、質問の数が表示されます。

username    user_id     CorrectAns
mj          455              16
charlie     1                16
bill        2                16
doug        51               16
sydney      452              16
Joe         218              16

sydney と joe が最初の出力ではなく、2 番目の出力にあることに気付いた場合

4

2 に答える 2

1

次のクエリを使用します。

$query ="SELECT tournament_id, username, user_id, COALESCE(COUNT(`prediction`),0) as cpred
FROM tournament_entries
WHERE tournament_id = 1
GROUP BY username
ORDER BY cpred DESC
LIMIT 0,10"

COALESCE与えられた最初の非 null パラメータを返します。

乾杯。

于 2013-04-07T01:03:24.373 に答える