Sql 选择在某一天访问过所有课程的所有成员
我正在尝试创建一个查询,选择所有具有“黄金”状态的成员,并参加了所有在周日举行的课程 这将是我的select语句: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 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图吗?这和我已经发布的答案有什么不同吗?我在你之前就开始打字了-没有答案。只是一个并行性问题。我想没什么事打扰你