2017-03-18 70 views
0

我有兩個表。如何通過使用兩個連接使用兩次來選擇列?

桌體育包含2列與IDTeam(一起這些數字代表像米蘭 - 利物浦soccermatch)。

表隊包含與IDteam(本例中爲米蘭和利物浦)中的號碼對應的球隊名稱。

我想通過選擇對應於IDTeam的名稱來顯示匹配列表的查詢。

如果我使用SELECT team.name,我會得到幾個語法錯誤。 如果我使用SELECT *,雖然很多列我不想看到,但沒有語法錯誤。

我該如何選擇兩列?

SELECT team.name 

FROM [dbo].[Sport] 

    left join Team t ON (t.IDTeam =Sport.HomeTeamID)  
    left join Team t_ ON (t_.IDTeam =Sport.ForeignTeamID); 

謝謝!

+0

使用'內join' – Pream

回答

1

您需要使用別名:

SELECT t.name, t_.name 
FROM Sport S 
left join Team t ON t.IDTeam = S.HomeTeamID 
left join Team t_ ON t_.IDTeam = S.ForeignTeamID; 

我也建議使用更好的別名,像日和TF。

+0

感謝詹姆斯,似乎朝着正確的方向我,但我仍然得到紅色下劃線的代碼。 Team中的列名確實是'name'。 – user2165379

+0

智能感知並不總是正確更新,你可以得到有下劃線的工作代碼。嘗試運行它。 –

+0

謝謝我看到它的作品完美! (我在錯誤的環境中執行了查詢)。 – user2165379

0

你不需要參加體育團隊兩次,試試這個有一個連接

select max(case 
       when t.IDTeam = S.HomeTeamID then 
       t.name 
       else 
       null 
      end) as HomeTeamName, 
     max(case 
       when t.IDTeam = S.ForeignTeamID then 
       t.name 
       else 
       null 
      end) as ForeignTeamName 
    from Sport S 
    left join Team t on (t.IDTeam = S.HomeTeamID or t.IDTeam = S.ForeignTeamID) 
相關問題