0

OK - 以下に構造化された 3 つのテーブルがあります

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 週) のチームを選択していない場合、その週の空白行を表示したいと考えています。チームIDごとにデータベースに行を埋め戻すことができると仮定していますが、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

これには左結合を使用できますが、テーブルを使用する順序に注意する必要があります。もう1つの問題は、別のユーザーから今週のピックがある場合です。そのため、次のようなサブクエリを使用する必要があると思います:

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 に答える