[英]Mysql Query for fetching records using single Query from three tables
[英]Single MySQL query on three tables
我有三個表,如下所示:
表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
------------------------------------
我想編寫一個查詢,通過使用player_game
表上的ID查找players
和games
表。 結果表應提供玩家名稱和相應的游戲名稱。 所有玩家的名字都應該返回。 如果任何玩家在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;
請告知我我在做什么錯。
除了您的第二次加入之外,您的答案看起來不錯。 您的第二個聯接也應該保持(外部)聯接,否則您將不會看到“ Romeo NULL”記錄。
除此之外,安倍還提到了2個游戲鏈接(對戰和坦克)。 您希望在輸出中看到它們嗎? 如果是這樣,您的代碼將做到這一點。 如果您希望安倍只有一個游戲鏈接,那么您需要告訴我們選擇其中一個游戲的邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.