[英]SQL Query Left Join Issues
我想选择的谁已经签署了一项活动,这是由给定的人数signup_limit
,存储在activity_info
,和谁已经签署了它,存储的人数signups
。 如果没有人注册,我希望它以注册数量为零来进行计算,但是正如我所知道的那样,它会完全删除该行。 我尝试使用左外部联接,但得到的结果相同。 有什么建议么?
SELECT info.code, info.signup_limit - COUNT(*) AS swag
FROM activity_info AS info
LEFT OUTER JOIN signups ON info.code = signups.activity_code, variables
WHERE
info.code IN (
SELECT schedule.code FROM schedule,variables WHERE schedule.date = variables.week
) AND variables.week = signups.date
GROUP BY signups.activity_code
更新:通过评论解决了该问题。 感谢大家!
SQL变量中间有一个单词。 移除以保持良好状态:
SELECT info.code,
info.signup_limit - count(*) AS swag
FROM activity_info AS info
LEFT OUTER JOIN signups ON info.code = signups.activity_code
WHERE info.code IN
(SELECT schedule.code
FROM schedule
INNER JOIN variables ON schedule.date = variables.week)
AND variables.week = signups.date
GROUP BY signups.activity_code
我想这就是你想要的:
SELECT
AI.code,
(
AI.signup_limit -
(
SELECT
COUNT(*)
FROM
signups AS S
WHERE
S.activity_code = AI.code
)
) AS swag
FROM
activity_info AS AI
WHERE
info.code IN
(
SELECT
schedule.code
FROM
schedule INNER JOIN variables ON schedule.date = variables.week
) AND
variables.week = signups.date
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.