我正在尝试做的是查询,这样我可以使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/

10-11 03:31
查看更多