この時点まで結果を得るために多くの作業を行ってきましたが、今は立ち往生しています。このようなケースをオンラインで見つけるのは困難でした。
基本的に次のようなテーブルがあります。
Name | Results
John | Win
John | Loss
John | Tie
Jim | Win
Jim | Win
このテーブルはさまざまなゲームから派生したものであるため、各行は基本的にゲームのプレーヤーの結果を表し、各ゲームには 2 人のプレーヤーがいるため、ゲームごとに 2 つの行が必要です。
とにかく、私はこのような結果を得たいと思っており、カウントであらゆる種類の奇妙なことを試しましたが、正しいカウントで個別の名前を取得するのに苦労しています. これが私が望むものです:
NAME | games_won | games_lost | games_tied
John | 1 | 1 | 1
Jim | 2 | 0 | 0
補足として、最初のテーブルを取得するために思いついた信じられないほど厄介な SQL ステートメントを次に示します。ただし、現在、次のようなゲーム ID も指定しています。
name | game_id | result
あなたが大笑いしたい場合にのみ、ここを読んでください。これを行うためのもっと簡単な方法があると99%確信していますが、ここでの私の質問は、私が以下に書いたことを改善する方法に関するものではないことを覚えておいてください.結果をどうするかだけです:
SELECT name, game_id,
case
when p1_score>p2_score then 'win'
when p1_score<p2_score then 'loss'
else 'tie'
end as result
from player
Inner JOIN game on player.player_id = game.p1_id
union select * from (SELECT name, game_id,
case
when p1_score>p2_score then 'win'
when p1_score<p2_score then 'loss'
else 'tie'
end as result
from player
Inner JOIN game on player.player_id = game.p2_id) as ta