【发布时间】:2016-07-25 06:28:08
【问题描述】:
我很难理解 MySQL 连接。我有三张桌子
-- events
id name
1 Event 1
2 Event 2
-- registrations
id event name
1 1 Alice
2 1 Bob
3 2 Alice
4 2 Charlie
-- scores
id event name score
1 1 Alice 10
2 1 Charlie 20
3 2 Alice 15
4 2 Bob 30
对于我正在努力解决的每个事件
- 有多少人注册(注册表中的行)但未获得分数(不包括分数表中的行)
- 有多少人获得了分数(分数表中的行)但未注册(不包括注册表中的行)
- 有多少人同时注册并获得分数
我尝试了不同的变体
SELECT *
FROM registrations r
LEFT JOIN scores s
ON r.event = s.event
WHERE s.event IS NULL
AND r.event = 1
但我不确定我应该加入什么:event 或 name 但两者都不是空的,而且我似乎从来没有得到我正在寻找的正确数字。最后的结果应该是这样的
name reg_only score_only reg&score total
event Event 1 1 1 1 3
【问题讨论】:
-
您是否尝试将表格添加到您的 * 语句中? "select r.* from registrations r....." 问题可能是事件列存在于几个涉及的表中。