私は次の表を持っています。
与えられたテーブルからすべてのプレーヤー統計レコードをフェッチしたいのですが、個々のプレーヤーのレコードには含まれています。
- プレーヤの名前
- ポジション
- プレイしたゲームの総数
- 得点されたゴールの数
- 目標に対するアシストの総数。
- 合計ポイント(合計ゴール+合計アシスト=合計ポイント)。
試した後、私はこのクエリを思いついた
SELECT SQL_CALC_FOUND_ROWS
CONCAT(u.first_name, ' ', u.last_name) as player_name,
p.position,
COUNT(g.id)
FROM
gce_player p
LEFT JOIN
gce_user u ON(u.id = p.user_id)
LEFT JOIN
gce_game_team_lineup gtl ON(gtl.player_id = p.id)
LEFT JOIN
gce_game_team gt ON(gt.id = gtl.game_team_id)
LEFT JOIN
gce_game_goal gg ON(gg.player_id = p.id)
LEFT JOIN
gce_game g ON(g.id = gt.game_id)
GROUP BY p.id
ORDER BY p.id asc
上記のクエリは、プレイされたゲームの総数まで適切なレコードを返します。この後、適切なレコードを取得する際に問題が発生します。これに関するあらゆる種類のヘルプに感謝します。
スキーマを見たい場合は、ここにsqlfiddleへのリンクがあります。テストデータもいくつか追加しました。
ありがとうございました。
アップデート :
ここに覚えておくべきいくつかのルールがあります。
得点されたゴールの数=プレーヤーによって得点されたゴールの総数。たとえば、
gce_game_goal
テーブルにその値を持つ10行がある場合player_id as 4
、プレーヤーは10ゴールを獲得したことを意味し、個々のプレーヤーのこのレコードをフェッチする必要があります。同様に、player_idの値が3である7行がある場合、これはプレーヤーを意味します。 ID3で7ゴールと同様に得点しました。ゴールのアシストの総数=プレーヤーがゴールキーパーに与えたアシストの総数(アシストはサッカーのパスのようなものです)。ユーザーが行ったアシストまたはパスの総数を計算する必要があります。
ゴールごとに2つのアシストがあり、各アシストはボールをゴライに渡すプレーヤーです。プレイヤーからのパスやアシストの回数を数えたい。たとえば、gce_game_goal
テーブルにassis1_id列またはassist2_id列のいずれかに値が3の行またはレコードが8つある場合、これはID3のプレーヤーが合計8アシストを獲得したことを意味します。
。
それでも疑問や質問がある場合はお知らせください。私の質問を改善してみてください。
ありがとう