我有三张表格如下:
表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查找games
和player_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;
请告诉我我做错了什么。
答案 0 :(得分:2)
除了第二次加入,你的答案看起来不错。你的第二次加入也应该离开(外部)加入,否则你将无法看到" Romeo NULL"记录。
除此之外,安倍还有2场比赛(反坦克和坦克)已经提到了。你希望在你的输出中看到它们两个?如果是这样,您的代码将执行此操作。如果你想要安倍只有一个游戏链接,那么你需要告诉我们选择其中一个游戏的逻辑。