假设我想知道某一地区的人(districtID=5)是否上过A级课程(cID=11或cID=12),但没有,因为他们的同名为,有不同的cID,那么如何用SQL以及他们的FirstName、LastName和电子邮件来写这篇文章呢?你能帮忙吗?以下是字段:
人
1 Esther B b@hotmail.com 33
2 Tommy L l@hotmail.com 55
注册-注册
22
23
部门性、无偿性、无偿性、专门性、区域性
40
41
学校 专区
33
55
我下面的密码不起作用。它一直给我行。
SELECT p.FirstName, p.LastName, p.Email, s.CourseIDNum
FROM People p, Registration r, Section s, School sc
WHERE p.PeopleID=r.PeopleIDNum AND r.SectionIDNum=s.SectionID AND
(s.CourseIDNum=11 OR s.CourseIDNum=12) AND sc.SchoolID=p.SchoolIDNum AND
s.DistrictIDNum=5 AND r.Completed='Y'
发布于 2013-05-20 16:04:58
如果可以的话,我尽量避免旧式联接,这样where子句只包含实际的子句,而不是联接和子句的混合。
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)
但是,如果您查看数据,连接不可能同时进行,因为对于这两个人,SecionID始终是40。
https://stackoverflow.com/questions/16653480
复制相似问题