在过去的几个小时里,我一直在敲墙头(尴尬,我知道),但我似乎无法让这个查询工作!我看过其他类似的问题,在Youtube上看过几个教程,但无论出于什么原因,我都无法让我的代码正常工作。所以,唉,我在这里:使用多表连接的SQL查询
该查询应该返回三件事:DEPT(Department),CNUM(Course Number)& CTITLE(课程标题)的学生的ID在任何给定的学期采取课程。
例如,我试图让我的查询陈述个人谁的ID的过程中部门,职务和号码101,并把课程在2013年春季下面是我的代码:
set echo on
spool c:\is\program1.txt
SELECT Courses.DEPT, Courses.CNUM, Courses.CTITLE
FROM Students
INNER JOIN Enrollments
ON Students.SNUM = Enrollments.SNUM
INNER JOIN SchClasses
ON Enrollments.CallNum = SchClasses.Callnum
INNER JOIN Courses
ON SchClasses.CNUM = Courses.CNUM
AND Students.SNUM = '101'
AND SchClasses.Semester = 'Sp'
AND SchClasses.Year = '2013';
spool off
下面的查询将返回:没有行选择
我不找人做我的为我工作,我只是在正确的方向寻找一个点。任何意见将不胜感激,谢谢你!
我已经解决了这个问题,你的所有帮助,非常感谢你。事实证明,我在逻辑上思考了这种错误的方式 - 实际上没有值插入到Spring记录中,因此找不到行的结果是正确的!
这是一个这么简单的监督,但我已经知道了。非常感谢你;正确的解决方案仍然如下:
set echo on
spool c:\is\program1.txt
SELECT Courses.DEPT, Courses.CNUM, Courses.CTITLE
FROM Students
INNER JOIN Enrollments
ON Students.SNUM = Enrollments.SNUM
INNER JOIN SchClasses
ON Enrollments.CallNum = SchClasses.Callnum
INNER JOIN Courses
ON SchClasses.CNUM = Courses.CNUM
AND Students.SNUM = '101'
AND SchClasses.Semester = 'Sp'
AND SchClasses.Year = '2013';
spool off
是否有你将所有条件放在连接语句而不是WHERE子句的原因?除非有特定的原因,否则WHERE子句可能就是你想要的。 – PhillipXT
嗨菲利普。没有任何理由,我只是看到了类似的问题,我希望取得积极的成果。之前的海报也建议我将第一个条件更改为'where',但是它返回相同的结果:未选择行。 – Lukon
您在模式中提供了2个附加表格,但不会在查询中显示它们。现在,我会怀疑你的查询返回一个结果 - 简介MIS。您是否可以加入'PreReq',其中cnum'300不存在? – sgeddes