2015-12-27 55 views
0

我想弄清楚如何用單個查詢而不是一堆查詢來做到這一點。SQL查詢幫助 - 用一些返回的空值查詢多個表

我有3張桌子。

遊戲(ID,GameName,Team1_id,Team2_id,日期時間)

GameResults(ID,game_ID,win_team,得分)

隊(ID,TEAM_NAME)

我想返回包含該列表的查詢: GameName,datetime,Team1.team_name,Team2.team_name,win_team,score。

但是,即使沒有win_team或得分,我仍想返回所有遊戲和團隊。如果我將表與外鍵綁定在一起,那麼GameResults表中沒有記錄的任何遊戲都不會顯示。我想要所有的遊戲,但有些還沒有玩過。如果有一些,我該如何返回GameResults,但即使沒有GameResults記錄,仍然會返回所有遊戲?

我可以只返回所有遊戲,然後循環檢查GameResults表的結果,但似乎有一種方法可以通過單個查詢來完成此操作。

+0

你嘗試過自己嗎?並請添加演示數據和所需的輸出。請參閱[如何創建mcve](http://stackoverflow.com/help/mcve) – davejal

回答

0

使用的outer join

select g.gamename, g.datetime, t1.team_name, t2.team_name, gr.win_team, gr.score 
from games g 
    inner join teams t1 on g.team1_id = t1.id 
    inner join teams t2 on g.team2_id = t2.id 
    left join gameresults gr on g.id = gr.game_id 
+0

謝謝,我會看看這個。我在想連接,但當我試圖想象它時,我的大腦開始受到傷害...... :) –