我试图为districtIDNum = 5
中那些完成了courseIDNum=11
或courseIDNum=12
的人获取数据,但不是两者都完成。
但是,在我执行查询之后,它返回了所有的区域。我做错什么了?请帮忙,并提前感谢!
SELECT p.FirstName, p.LastName, p.Email, 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=11 AND s.CourseIDNum!=12)
OR (s.CourseIDNum!=11 AND s.CourseIDNum=12)
AND s.DistrictIDNum=5
AND r.Completed='Y'
以下是所涉及的表格:
人
1 Esther B b@hotmail.com 33
2 Tommy L l@hotmail.com 55
注册、注册、商业、商业等
22
23
部门性、无偿性、无偿性、专门性、区域性
40
41
学校 专区
33
55
发布于 2013-05-20 18:30:56
为了只返回那些选择了一种或另一种而不是两者兼而有之的人,试着:
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 s.DistrictIDNum = 5
AND r.Completed='Y'
group by p.PeopleID
having count(distinct s.CourseIDNum)=1
SQLFiddle 这里.
https://stackoverflow.com/questions/16655786
复制相似问题