У меня есть 3 стола.Присоединение к 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
Я попробовал это, но я не получаю corrent отсчеты.
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)'. – Andrew
Почему вы использовали правое внешнее соединение и левое? Не следует оставлять их обоих, поскольку вы только заботитесь о счете, если Матч существует. – HLGEM
Это опечатка, что ваш псевдоним hscore (и, следовательно, ваш результат HomeScore) использует AwayTeamId и наоборот? Или это ответ на вашу проблему? –