0

好的 - 我有三个表,结构如下

tbl_1
------
userid
teamid
teamname
eliminated

tbl_2
------
teamid
week
team

tbl_3
------
team
NFLname

nfl-schedule
------
week
time
awayteam (same as "team" in tbl_3)
hometeam (same as "team" in tbl_3)

这是关于“幸存者联盟”的查询,我需要获取每周的团队 ID、团队名称、淘汰、团队、周和 NFL 名称。如果用户没有选择本周的团队,例如第 2 周,我希望看到该周的空白行。我假设我可以为每个 teamid 将行回填到数据库中,但想知道我是否可以简单地使用 sql 和一些内部连接来做到这一点?

select a.teamid, a.teamname, a.eliminated, b.team, b.week, c.NFLnamefrom `tbl_1` a
            left join `tbl_2` b on a.teamid = b.teamid
            left join `tbl_3` c on c.`team` = b.team
            where a.userid =  XXX
4

1 回答 1

0

您可以为此使用左连接,但您必须注意使用表的顺序。另一个问题是当本周有另一个用户选择时,所以我认为你必须使用这样的子查询:

select w.week,t.teamid,t.teamname,t.eliminated,t.team,t.NFLname 
from nfl-schedule w
left join ( 
select a.teamid, a.teamname, a.eliminated, b.team, b.week, c.NFLname
from `tbl_1` a
left join `tbl_2` b on a.teamid = b.teamid
left join `tbl_3` c on c.`team` = b.team
where a.userid =  XXX
) t on w.week = t.week
于 2013-09-11T06:21:00.183 回答