我试图找出如何使用单个查询而不是一堆查询。
我有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 :(得分: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