【发布时间】:2012-09-25 10:40:27
【问题描述】:
对于足球联赛,我有两张桌子:
- “teams”是一个表格,将所有团队列为唯一条目('id', 'team_name')
- “matches”是显示匹配结果的表格:在列中 'home' 和 'away' 我保存每个游戏结果。 'home_team_id' 和 “away_team_id”是与球队表的关联。
这是我的查询的样子:
SELECT Teams, Sum(P) as 'Matches', Sum(W) as 'win', Sum(D) as 'draw', Sum(L) as 'lost',
SUM(Pts) as 'points'
FROM (
SELECT home Teams, 1 P,
IF (home > away,1,0) W,
IF (home = away,1,0) D,
IF (home < away,1,0) L,
CASE
WHEN home > away THEN 3
WHEN home = away THEN 1
ELSE 0
END PTS
FROM `matches`
UNION ALL
SELECT away Teams, 1,
IF (home < away,1,0),
IF (home = away,1,0),
IF (home > away,1,0),
CASE
WHEN home < away THEN 3
WHEN home = away THEN 1
ELSE 0
END
FROM `matches`
) AS ERG
GROUP BY Teams
ORDER BY SUM(Pts) DESC
现在我想要团队表中的团队名称 (teams.team_name)。为了实现这一点,我尝试了几个没有运气的连接语句。
很明显,teams-table 可以包含没有参加比赛的球队。这些团队需要以零结果显示。
因此我尝试了 LEFT JOIN:
SELECT team_name AS 'Teams'
FROM `teams`
LEFT JOIN matches ON ( teams.id = matches.home_team_id )
就在最后的 ORDER 行之后。我收到一条错误消息。 我使用 MySQL 5.1.44,所以嵌套选择应该不是问题。
有什么想法吗?
【问题讨论】:
-
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'SELECT team_name AS 'Mannschaft' FROM
teamsLEFT JOIN 匹配 ON 附近使用正确的语法(第 20 行的 team.id = ' -
当我尝试在sqlfiddle.com/#!2/7d97b/1 摆弄它时看不到错误(好的,这里没有数据,但我只是在检查错误)