考虑加入
家
聚合结果集和
离开
聚合结果集每个左连接到
火柴
返回所有比赛,包括未得分的比赛。
SELECT m.MatchID, m.Home, m.Away,
IFNULL(h.Score, 0) AS HomeScore, IFNULL(a.Score, 0) AS AwayScore
FROM
Match m
LEFT JOIN
(SELECT m.MatchID, m.Home, Count(*) As Score
FROM Match m
LEFT JOIN Goal g ON m.MatchID = g.Match
INNER JOIN Player p ON g.Player = p.PlayerID AND p.Team = m.Home
GROUP BY m.MatchID, m.Home) As h
ON m.MatchID = h.MatchID
LEFT JOIN
(SELECT m.MatchID, m.Away, Count(*) As Score
FROM Team t
INNER JOIN Match m ON t.Name = m.Away
LEFT JOIN Goal g ON m.MatchID = g.Match
INNER JOIN Player p ON g.Player = p.PlayerID AND p.Team = t.Name
GROUP BY m.MatchID, m.Away) As a
ON m.MatchID = a.MatchID
SQL Fiddle Demo