簡體   English   中英

在三個表上進行單個MySQL查詢

[英]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查找playersgames表。 結果表應提供玩家名稱和相應的游戲名稱。 所有玩家的名字都應該返回。 如果任何玩家在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM