昨日の質問の続きです。
ここに私の3つのテーブルがあります:
ファイターズテーブル
fighter_id | name
-----------------------
1 | John
2 | Steve
3 | Bill
4 | Bobby
イベント テーブル
event_id | event_name | event_date
-------------------------------------------
1 | MMA | 01/01/2010
2 | Cool | 02/20/2010
3 | Yeaa! | 04/15/2010
ファイトテーブル
fight_id | fighter_a | fighter_b | winner | method | event
-----------------------------------------------------------------------
1 | 1 | 2 | 1 | Sub | 1
2 | 4 | 1 | 4 | KO | 2
3 | 1 | 3 | NULL | Draw | 3
取得しようとした結果
result | opponent | method | event | date
----------------------------------------------------------
Draw | Bill | Draw | Yeaa! | 04/15/2010
Loss | Bobby | KO | Cool | 02/20/2010
Win | Steve | Sub | MMA | 01/01/2010
したがって、fights テーブルでは、fighter_a、fighter_b、および Winner は、Fighters テーブルの fighter_id に対応する整数です。
私は基本的に、fighter_id ($fighter_id) に基づいてデータを取得するページにいます。
対戦相手の名前、結果 (win、loss、draw、または nc)、method、event_name、および event_date を含む、そのファイターの各戦いで行を作成しようとしています。課題は、勝者がfighter_aまたはfighter_bのいずれかにいる可能性があることです。常に同じ列にあるとは限りません。私が得ることができる助けに感謝します。
select
fight_id,
CASE
WHEN winner is not null and winner=fighter_id then 'win'
WHEN winner is not null and winner<>fighter_id then 'loss'
WHEN winner is null and method='Draw' then 'draw'
WHEN winner is null and method = 'No Contest' then 'no contest'
ELSE ''
END as match_result,
participant.name 'participant',
opponent.name 'opponent'
FROM fights
INNER JOIN fighters as participant on participant.fighter_id = fights.fighter_a
INNER JOIN fighters as oppoent on opponent.fighter_id = fights.fighter_b
WHERE
fighter_a=$fighter_id OR fighter_b=$fighter_id
ORDER BY
event_date DESC