【发布时间】:2015-08-11 20:01:15
【问题描述】:
我有 3 张桌子。
Team
TeamId Team
1 Manchester United
2 Arsenal
3 Liverpool
Match
MatchId HomeTeamId AwayTeamId MatchStartDate
3 1 2 2/2/2015
8 3 1 6/2/2015
Score
ScoreId MatchId TeamId ScorTime
1 3 1 2/2/2015 12:30:00
2 3 2 2/2/2015 12:35:00
3 3 1 2/2/2015 12:38:00
4 8 1 6/2/2015 12:45:00
5 8 1 6/2/2015 12:49:00
我想要类似的东西
MatchId HomeTeam HomeTeamScore AwayTeam AwayTeamScore MatchDate
3 Manchester United 2 Arsenal 1 2/2/2015
8 Liverpool 0 Manchester United 2 6/2/2015
我已经尝试过了,但我没有得到正确的计数。
SELECT COUNT(hscore.MatchId) AS HomeScore
, COUNT(ascore.MatchId) AS AwayScore
FROM Match
RIGHT OUTER JOIN Score AS hscore
ON Match.AwayTeamId = hscore.TeamId
LEFT OUTER JOIN Score AS ascore
ON Match.HomeTeamId = ascore.TeamId
【问题讨论】:
-
好吧,你没有告诉我们你的结果有什么问题,所以我来猜测一下。尝试使用
count (distinct hscore.MatchId)。 -
你为什么使用右外连接和左外连接?他们不应该都留一个,因为如果匹配存在,您只关心分数。
-
您的 hscore 别名(以及您的 HomeScore 结果)使用 AwayTeamId 是否是错字,反之亦然?或者这就是您问题的答案?
标签: sql-server database join