Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择在某一天访问过所有课程的所有成员_Sql_Postgresql - Fatal编程技术网

Sql 选择在某一天访问过所有课程的所有成员

Sql 选择在某一天访问过所有课程的所有成员,sql,postgresql,Sql,Postgresql,我正在尝试创建一个查询,选择所有具有“黄金”状态的成员,并参加了所有在周日举行的课程 这将是我的select语句: SELECT member_ID, first_name, last_name FROM member JOIN person p on member.fk_person = p.person_ID JOIN enrolment e on member.member_ID = e.fk_member_ID JOIN member

我正在尝试创建一个查询,选择所有具有“黄金”状态的成员,并参加了所有在周日举行的课程

这将是我的select语句:

SELECT member_ID, first_name, last_name
FROM member
         JOIN person p on member.fk_person = p.person_ID
         JOIN enrolment e on member.member_ID = e.fk_member_ID
         JOIN membership m on member.fk_membership = m.membership_ID
         JOIN class c on e.fk_class_ID = c.class_ID
WHERE status = 'GOLD'
GROUP BY member_ID, first_name, last_name
HAVING COUNT(*) = (SELECT COUNT(*) FROM class WHERE weekday = 'SUNDAY');
以下语句返回两个发生在星期天的类:

SELECT count(class_id)
FROM class
WHERE weekday = 'SUNDAY';
SELECT member_ID, first_name, last_name
FROM member
         JOIN person p on member.fk_person = p.person_ID
         JOIN enrolment e on member.member_ID = e.fk_member_ID
         JOIN membership m on member.fk_membership = m.membership_ID
         JOIN class c on e.fk_class_ID = c.class_ID
WHERE status = 'GOLD' AND weekday = 'SUNDAY'
GROUP BY member_ID, first_name, last_name
HAVING COUNT(*) = (SELECT COUNT(*) FROM class WHERE weekday = 'SUNDAY');
我在上面的select语句是不是错了?我应该做什么来实现我的目标


整个SQL脚本在此处可用:

您需要在查询的主要部分设置
计数条件,以便它也仅在星期天计算类数:

SELECT count(class_id)
FROM class
WHERE weekday = 'SUNDAY';
SELECT member_ID, first_name, last_name
FROM member
         JOIN person p on member.fk_person = p.person_ID
         JOIN enrolment e on member.member_ID = e.fk_member_ID
         JOIN membership m on member.fk_membership = m.membership_ID
         JOIN class c on e.fk_class_ID = c.class_ID
WHERE status = 'GOLD' AND weekday = 'SUNDAY'
GROUP BY member_ID, first_name, last_name
HAVING COUNT(*) = (SELECT COUNT(*) FROM class WHERE weekday = 'SUNDAY');
输出(用于示例数据)


我认为您只是缺少了一个WHERE谓词,用于只过滤周日有类的对象(以便计数(*)正确工作):


嗨,我能帮你做一个数据库结构的ER图吗?这和我已经发布的答案有什么不同吗?我在你之前就开始打字了-没有答案。只是一个并行性问题。我想没什么事打扰你