单个MySQL查询三个表

时间:2016-08-19 19:38:59

标签: mysql sql

我有三张表格如下:

表1: player_game

player_id | game_id
-------------------
    1     |    1
    2     |    2  
    5     |   20
    4     |    1
    2     |   20
-------------------

表2:玩家

player_id | player_name | player_age
------------------------------------
    1     |   John      |  20
    2     |   Abe       |  18
    5     |   Lisa      |  21
    4     |   Mary      |  25
    3     |   Romeo     |  21
------------------------------------

表3:游戏

game_id   | game_name    | diff_level
------------------------------------
    1     | AOE          |  easy
    2     | Contra       |  easy
   11     | Tribalwars   |  difficult
   20     | Tanks        |  novice
   25     | Minesweeper  |  medium
------------------------------------

我想编写一个查询,使用players表上的ID查找gamesplayer_game表。结果表应该给出玩家姓名和相应的游戏名称。应该返回所有球员的名字。如果任何玩家在player_game表中没有ID,则应列出NULL。预期产出低于:

结果:

Player Name |   Games Name
--------------------------
  John      |   AOE
  Abe       |   Contra
  Lisa      |   Tanks
  Mary      |   AOE
  Romeo     |   NULL
  Abe       |   Tanks
--------------------------

我写了以下查询,但它不起作用:

SELECT p.player_name AS "Player Name", g.game_name AS "Games Name"
FROM players p
LEFT OUTER JOIN player_game pg
ON p.player_id = pg.player_id
JOIN games g
ON g.game_id = pg.game_id;

请告诉我我做错了什么。

1 个答案:

答案 0 :(得分:2)

除了第二次加入,你的答案看起来不错。你的第二次加入也应该离开(外部)加入,否则你将无法看到" Romeo NULL"记录。

除此之外,安倍还有2场比赛(反坦克和坦克)已经提到了。你希望在你的输出中看到它们两个?如果是这样,您的代码将执行此操作。如果你想要安倍只有一个游戏链接,那么你需要告诉我们选择其中一个游戏的逻辑。