繁体   English   中英

SQL查询左连接问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM