我会尽力在这里解释我的问题。我运行了一个查询,该查询适用于检查已在courseIDNum=11
中完成courseIDNum=12
或districtIDNum=5
的人员,但不能同时检查两个课程IDNums。这是脚本:
SELECT max(p.FirstName),
max(p.LastName),
max(p.Email),
max(s.CourseIDNum)
FROM People p
INNER JOIN Registration r
on p.PeopleID = r.PeopleIdNum
INNER JOIN Section s
on r.SectionIDNum = s.SectionID
INNER JOIN School sc
on p.SchoolIDNum = sc.SchoolID
WHERE s.CourseIDNum IN (11, 12)
AND sc.DistrictIDNum = 5
AND r.Completed='Y'
group by p.PeopleID
having count(distinct s.CourseIDNum)=1
现在我的任务是再次为districtIDNum=5
中的人检索数据,但这次要检查他们是否已经完成了所有3门课程,其中3门课程中有2门的课程名称相同/ strong>但是这两门课程中的每一门都有2个不同的课程IDNums。所以,我编辑了下面显示的WHERE
部分。返回的结果仅为完成12
和177
的人,11
,68
和128
没有结果。然后,我将 OR 替换为 AND 运算符,并返回 0行。非常感谢任何帮助!
WHERE s.CourseIDNum IN (11, 12)
OR s.CourseIDNum IN (68, 177)
OR s.CourseIDNum=128
AND sc.DistrictIDNum = 5
AND r.Completed='Y'
group by p.PeopleID
having count(distinct s.CourseIDNum)=3
以下是涉及的表格:
的peopleid名姓电子邮件schoolIDNum
1埃丝特乙b@hotmail.com 33
2托米大号l@hotmail.com 55
3利兹中号m@hotmail.com 90
registrationID peopleIDNum sectionIDNum
22个1 40
23个2 41
24个3 132
25个1 78
26个2 52
27 1 63
sectionID courseIDNum
40个11
41个12
52个68
63个128
78个177
132 195
courseID coursename
11健康(旧)
12健康(新)
68 PE(旧)
128键盘输入
177 PE(新)
195计算
schoolID districtIDNum
33个5
55个5
90 12