我正在尝试做的是查询,这样我可以使Fights表更具可读性。
因此,战斗机1会从战斗机表中提取ID 1,而战斗机2将执行相同的操作。获胜者是0、1、2。0表示是平局,然后1表示战斗机1获胜,2表示战斗机2获胜。
我到目前为止尝试过的查询:
SELECT CONCAT(first_name, ' ', last_name) 'Fighter 1',
CONCAT(victory_method.name, ' (', method_notes, ')') 'Victory'
FROM fights
JOIN fighters ON fights.fighter1_id = fighters.id
JOIN victory_method ON fights.victory_method_id = victory_method.id
现在这是一个很好的开始,但是我需要弄清楚如何使Fighter 2也在那里列出,然后是Winner,无论是平局还是赢得胜利的1或2斗士。
最佳答案
内部别名再次加入战斗机表,使用别名as
SELECT
CONCAT(fo.first_name, ' ', fo.last_name, if (fights.winner=1, "Winner", "Loser")) 'Fighter 1',
CONCAT(ft.first_name, ' ', ft.last_name, if (fights.winner=2, "Winner", "Loser")) 'Fighter 2',
CONCAT(victory_method.name, ' (', method_notes, ')') 'Victory'
FROM fights
INNER JOIN fighters as fo ON fights.fighter1_id = fo.id
INNER JOIN fighters as ft ON fights.fighter2_id = ft.id
INNER JOIN victory_method ON fights.victory_method_id = victory_method.id
关于mysql - MySQL数据库内部联接-查询帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7328612/