2013-09-11 84 views
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) 

這是一個「倖存者聯盟」在那裏我需要得到teamid,teamname,淘汰,團隊,一週查詢,NFLname每個星期。如果用戶本週沒有選擇一個團隊,例如第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 
+0

SQL查詢只能返回正在處理的表中的數據的結果,如果表中沒有數據,則不會出現,所以即使你的方法不工作,如果沒有用戶選擇了一個團隊fo特定的一週。 –

+0

沒辦法用一些神奇的sql來「僞造」一個空行:) – timw07

+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 
+0

謝謝 - 這工作! – timw07