Pomocí podvýběru s podmíněnými podmínkami přepněte hledané fighter_id na column_a, pokud je ve sloupci_b, tímto způsobem to zjednoduší vaše operace a spojí se s vnějším dotazem:
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
Také, pokud je pole vítěze null, pak stačí opakovat pole metody. Tímto způsobem, když chcete přidat další typ metody, kde je vítěz nulový, do vašeho systému, nemusíte pokračovat ve více podmíněných kontrolách vašeho CASE
prohlášení.