という名前のテーブルがあり、players
次に、、、、という名前の他のテーブルがtries
あります。conversions
penalties
dropgoals
player_id
from を取得してからplayers
、以下をカウントする必要があります。
player_id
の試行回数tries
player_id
のコンバージョン数conversions
- のペナルティの
player_id
数penalties
player_id
のドロップゴール数dropgoals
各ゲームには約 15 人のプレーヤーがいるため、これはすべて一度に行う必要があります。このサイトはラグビーに関連しています。
私は次のことを試しましたが、うまくいきます:
SELECT players.player_id, players.number, CASE WHEN (COUNT(tries.player_id) = 0) THEN ' ' ELSE COUNT(tries.player_id) END AS nrTries FROM players LEFT JOIN tries ON players.player_id = tries.player_id WHERE players.team_id IS NULL GROUP BY players.player_id ORDER BY players.number
テーブルからすべてのプレーヤーを選択しplayers
、試行をカウントしますが、次のように変更するとすぐにエラーが発生します。
SELECT players.player_id, players.number, player.name, CASE WHEN (COUNT(tries.player_id) = 0) THEN ' ' ELSE COUNT(tries.player_id) END AS nrTries FROM players, player LEFT JOIN tries ON players.player_id = tries.player_id WHERE players.player_id = player.player_id AND players.team_id IS NULL GROUP BY players.player_id ORDER BY players.number
次のエラーが発生します。
Unknown column 'players.player_id' in 'on clause'
誰かがこれで私を助けてくれませんか、私は今何日も苦労していますか?
前もって感謝します
// 編集:
こんにちは、皆さん、私は今とてもばかげていると感じています。このコードは見事に機能しますが、プレーヤーが複数のタイプ、たとえばトライとコンバージョン、またはトライとペナルティで得点した場合、各タイプの数を誤ってカウントし、それらが作成されます。すべて同じです。
私のプレーヤーが 1 つのペナルティと 3 つのドロップゴールを獲得したとしましょう。それは 3 つのペナルティと 3 つのドロップゴールとして出力されます。何が問題なのかわかりません。
これが私のクエリです:
SELECT players.player_id, players.number, player.name, player.surname,
CASE WHEN (COUNT(tries.player_id) = 0) THEN '& nbsp;' ELSE COUNT(tries.player_id) END AS nrTries,
CASE WHEN (COUNT(conversions.player_id) = 0) THEN '& nbsp;' ELSE COUNT(conversions.player_id) END AS nrConversions,
CASE WHEN (COUNT(dropgoals.player_id) = 0) THEN '& nbsp;' ELSE COUNT(dropgoals.player_id) END AS nrDropgoals,
CASE WHEN (COUNT(penalties.player_id) = 0) THEN '& nbsp;' ELSE COUNT(penalties.player_id) END AS nrPenalties
FROM players
LEFT JOIN tries ON players.player_id = tries.player_id AND tries.game_id = '$game_id'
LEFT JOIN conversions ON players.player_id = conversions.player_id AND conversions.game_id = '$game_id'
LEFT JOIN dropgoals ON players.player_id = dropgoals.player_id AND dropgoals.game_id = '$game_id'
LEFT JOIN penalties ON players.player_id = penalties.player_id AND penalties.game_id = '$game_id'
LEFT JOIN player ON players.player_id = player.player_id
WHERE players.player_id = player.player_id AND players.team_id IS NULL AND players.game_id = '$game_id'
GROUP BY players.player_id ORDER BY players.number
注意: $game_id は PHP 変数です。
また、 & と nbsp; の間にスペースを入れました。そうしないと、SO に出力されません。
誰かが私を正しい方向に向けることができますか?