在获得查询以使用“和”运算符检索所需结果时遇到困难。在firstname、lastname、email、courseID 3门课程中,需要显示完成(健康老人(courseIDNum=11)或Health New (courseIDNum=12))和(体育老年(courseIDNum=68 OR E 111PE New (courseIDNum=177))和课程in =128E 212的课程。请知道,11和12实际上是同一门课程:一门是旧的,另一门是新的( 68和177也是一样),因此,districtIDNum=5中的人只能选其中一门;这就是我尝试使用(11,12)的原因。但是,它不能正确工作,因为它返回0行。
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.CourseIDNum IN (68, 177)
AND s.CourseIDNum=128
AND sc.DistrictIDNum = 5
AND r.Completed='Y'
group by p.PeopleID
having count(distinct s.CourseIDNum)=1不应该返回的行是来自完成Liz M的districtIDNum=12的courseIDNum=195。另一方面,来自Esther B的districtIDNum=5已经完成了courseIDs 11, 177 and 128;因此,她的数据应该显示所有的3个过程On。数据还应该显示Tommy L已经完成了courseIDs 12 and 68。
以下是示例表:
人
1 Esther B b@hotmail.com 33
2 Tommy L l@hotmail.com 55
3 Liz M m@hotmail.com 90
注册、注册、商业、商业等
22
23
24
25
26
27
部门性,非自愿性
40
41
52
63
78
132
课程编号
11
12
68
128个商品转制转制
177
[195]准准
学校 专区
33
55
90
发布于 2013-05-23 05:40:09
表示查询条件的方式
s.CourseIDNum IN (11, 12)
AND s.CourseIDNum IN (68, 177)
AND s.CourseIDNum=128意味着CourseIDNum必须同时等于一组整数。
SELECT p.FirstName,
p.LastName,
p.Email
FROM People p
WHERE p.PeopleID IN
(
SELECT r.PeopleIdNum
FROM Registration r
INNER JOIN Section s
on r.SectionIDNum = s.SectionID
INNER JOIN School sc
on p.SchoolIDNum = sc.SchoolID
WHERE s.CourseIDNum IN (11, 12, 68, 177, 128)
AND sc.DistrictIDNum = 5
AND r.Completed='Y'
)发布于 2013-05-23 05:27:16
WHERE s.CourseIDNum IN (11, 12)
AND s.CourseIDNum IN (68, 177)
AND s.CourseIDNum=128您的这个部分意味着您正在编写如下所示的查询
WHERE s.CourseIDNum IN (11,12,68,177) and courseIDNum = 128这意味着CourseID值在一种情况下可以等于11,12,68,177,同时它应该等于128.这是不可能的所以我不确定,但是试着用
WHERE (s.CourseIDNum IN (11, 12,68,177)
OR s.CourseIDNum=128)https://stackoverflow.com/questions/16701051
复制相似问题