Gunakan subselect dengan conditional untuk mengganti fighter_id yang Anda cari ke column_a jika ada di column_b, dengan begitu, ini menyederhanakan operasi Anda dan bergabung dalam kueri luar:
SELECT
(
CASE
WHEN a.winner = a.f_a THEN 'Win'
WHEN a.winner = a.f_b THEN 'Loss'
WHEN a.winner IS NULL THEN a.method
END
) AS result,
b.name AS opponent,
a.method AS method,
c.event_name AS event,
c.event_date AS date
FROM
(
SELECT
IF(fighter_b = $fighter_id, fighter_b, fighter_a) AS f_a,
IF(fighter_b = $fighter_id, fighter_a, fighter_b) AS f_b,
winner,
method,
event
FROM
fights
WHERE
$fighter_id IN (fighter_a, fighter_b)
) a
INNER JOIN
fighters b ON a.f_b = b.fighter_id
INNER JOIN
events c ON a.event = c.event_id
ORDER BY
c.event_date DESC
Juga, jika bidang pemenang adalah nol, maka gema saja bidang metode. Dengan begitu, ketika Anda ingin menambahkan jenis metode lain di mana winner adalah null ke sistem Anda, Anda tidak perlu terus melakukan pemeriksaan bersyarat lagi ke CASE
Anda pernyataan.