2012-01-23 88 views
1

我有3個表...記錄,球隊和裁判在Teams表我的MS-訪問 我有多種選擇

Team_ID, Team_Name 
Referees

我有

Referee_ID and Referee_Name 

Records表I具有

Game_ID, Game_No, Play_Date, Win_Team, Lose_Team, Referee_1, Referee_2 

Win_Te來自記錄的am和Lose_Team是球隊表中Team_ID的外鍵。 ,裁判員1和裁判員2是裁判員席位的外鍵。

我的問題是,我可以查詢Records.Win_Team和Records.Lose_Team的Team_Name?還與裁判...

我嘗試這一個,

SELECT distinct Records.Game_No, Records.Play_Date, IIf([Records.W_Team]=[Teams.Team_ID],Teams.Team_Name) AS Expr1, IIf([Records.L_Team]=[Teams.Team_ID],Teams.Team_Name) AS Expr2 
FROM Records, Teams 
where Records.W_Team = Teams.Team_ID 
or Teams.Team_ID = Records.L_Team 
group by 
Records.Game_No, 
Records.Play_Date, 
Records.W_Team, 
Teams.Team_ID, 
Teams.Team_Name, 
Records.L_Team 

但輸出enter image description here

就有人在我的情況的想法?在此先感謝...

回答

2

您需要加入團隊兩次。試想一下,你有兩個Teams表:加入一個贏家ID和一個失敗者ID:

SELECT Records.Game_No, Records.Play_Date, 
     Team_Winners.Team_Name, Team_Losers.Team_Name 
    FROM (Records INNER JOIN Teams AS Team_Winners 
     ON Records.Win_Team = Team_Winners.Team_ID) 
     INNER JOIN Teams AS Team_Losers 
     ON Records.Lose_Team = Team_Losers.Team_ID 

同樣是對裁判如此,你還需要加入他們的兩倍(這留給讀者作爲鍛鍊;-))。