我无法弄清楚如何加入两个足球比赛行,以便每场比赛都有主队和客队,这是迄今为止我能做的最好的 代码:
SELECT SM.MatchDate, SM.MatchStartTime, P.ParkName, F.FieldNumber, F.FieldName,
TH.TeamName AS 'Home Team Name', TA.TeamName AS 'Away Team Name',
CONCAT(R.RefereeFirst, ' ', R.RefereeLast) AS RefereeName,
CONCAT(SM.HomeTeamScore, ' - ', SM.AwayTeamScore) AS MatchScore, SM.Winner
FROM SOCCERMATCH SM
INNER JOIN MATCH_TEAM MT ON SM.MatchID = MT.MATCH_MatchID
INNER JOIN FIELD F ON SM.FIELD_FieldID = F.FieldID
INNER JOIN PARK P ON F.PARK_ParkID = P.ParkID
INNER JOIN REF R ON SM.REF_RefereeID = R.RefereeID
LEFT JOIN TEAM TH ON TH.TeamID = MT.TEAM_TeamID AND SM.HomeTeam = TH.TeamName
LEFT JOIN TEAM TA ON TA.TeamID = MT.TEAM_TeamID AND SM.AwayTeam = TA.TeamName;
MatchDate, MatchStartTime, ParkName, FieldNumber, FieldName, Home Team Name, Away Team Name, RefereeName, MatchScore, Winner
其他尝试也出现了类似的问题: 代码:
SELECT SM.MatchDate, SM.MatchStartTime, P.ParkName, F.FieldNumber, F.FieldName, SM.HomeTeam AS 'Home Team Name', SM.HomeTeam AS 'Away Team Name',
CONCAT(R.RefereeFirst, ' ', R.RefereeLast) AS RefereeName, CONCAT(SM.HomeTeamScore, ' - ', SM.AwayTeamScore) AS MatchScore, SM.Winner
FROM SOCCERMATCH SM
INNER JOIN MATCH_TEAM MT ON SM.MatchID = MT.MATCH_MatchID
INNER JOIN FIELD F ON SM.FIELD_FieldID = F.FieldID
INNER JOIN PARK P ON F.PARK_ParkID = P.ParkID
INNER JOIN REF R ON SM.REF_RefereeID = R.RefereeID;
MatchDate, MatchStartTime, ParkName, FieldNumber, FieldName, HomeTeamName, AwayTeamName, RefereeName, MatchScore, Winner
或者在这两种情况下根本没有返回行: 代码:
SELECT SM.MatchDate, SM.MatchStartTime, PK.ParkName, F.FieldNumber, F.FieldName,
T1.TeamName AS HomeTeamName, T2.TeamName AS AwayTeamName, CONCAT(R.RefereeFirst, ' ', R.RefereeLast) AS RefereeName,
CONCAT(SM.HomeTeamScore, ' - ', SM.AwayTeamScore) AS Score, SM.Winner
FROM SOCCERMATCH SM
INNER JOIN FIELD F ON SM.FIELD_FieldID = F.FieldID
INNER JOIN PARK PK ON F.PARK_ParkID = PK.ParkID
INNER JOIN MATCH_TEAM MT1 ON SM.MatchID = MT1.MATCH_MatchID AND MT1.TEAM_TeamID = SM.HomeTeam
INNER JOIN MATCH_TEAM MT2 ON SM.MatchID = MT2.MATCH_MatchID AND MT2.TEAM_TeamID = SM.AwayTeam
INNER JOIN TEAM T1 ON MT1.TEAM_TeamID = T1.TeamID
INNER JOIN TEAM T2 ON MT2.TEAM_TeamID = T2.TeamID
INNER JOIN REF R ON SM.REF_RefereeID = R.RefereeID;
SELECT SM.MatchID, SM.MatchDate, SM.MatchStartTime, P.ParkName, F.FieldNumber, F.FieldName,
HT.TeamName AS 'Home Team Name', AT.TeamName AS 'Away Team Name',
CONCAT(R.RefereeFirst, ' ', R.RefereeLast) AS RefereeName,
CONCAT(SM.HomeTeamScore, ' - ', SM.AwayTeamScore) AS MatchScore, SM.Winner
FROM SOCCERMATCH SM
INNER JOIN MATCH_TEAM MT ON SM.MatchID = MT.MATCH_MatchID
INNER JOIN FIELD F ON SM.FIELD_FieldID = F.FieldID
INNER JOIN PARK P ON F.PARK_ParkID = P.ParkID
INNER JOIN REF R ON SM.REF_RefereeID = R.RefereeID
INNER JOIN TEAM HT ON HT.TeamID = MT.TEAM_TeamID AND SM.HomeTeam = HT.TeamName
INNER JOIN TEAM AT ON AT.TeamID = MT.TEAM_TeamID AND SM.AwayTeam = AT.TeamName;
结果: MatchID, MatchDate, MatchStartTime, ParkName, FieldNumber, FieldName, Home Team Name, Away Team Name, RefereeName, MatchScore, Winner 没什么