SQL 2引用第三个表的不同表的总和
我对SQL非常陌生,我正在尝试获取一个学生的总学时,如果他们是选修学时还是核心学时。我正在检查课程表,该表给出了他们所选的课程,然后比较所选的课程,看看它们是核心课程还是选修课程,然后尝试得到两个单独的总数。不过,我不知道为什么两个总数都得到了0SQL 2引用第三个表的不同表的总和,sql,oracle,join,sum,Sql,Oracle,Join,Sum,我对SQL非常陌生,我正在尝试获取一个学生的总学时,如果他们是选修学时还是核心学时。我正在检查课程表,该表给出了他们所选的课程,然后比较所选的课程,看看它们是核心课程还是选修课程,然后尝试得到两个单独的总数。不过,我不知道为什么两个总数都得到了0 Select nvl(sum(C.Credit_Hours),0) As CoreCreditHours, nvl(sum(C1.Credit_Hours),0) As ElectiveCreditHours FROM COURSE C
Select nvl(sum(C.Credit_Hours),0) As CoreCreditHours,
nvl(sum(C1.Credit_Hours),0) As ElectiveCreditHours
FROM COURSE C
JOIN COURSE_TAKEN ON
C.CRN = COURSE_TAKEN.CRN
JOIN COURSE C1 ON
C1.CRN = COURSE_TAKEN.CRN
WHERE C.CRN IN(
SELECT MINOR_CORE_REQUIREMENTS.CRN
FROM MINOR_CORE_REQUIREMENTS
WHERE MINOR_CORE_REQUIREMENTS.Minor_Name = 'Computer Science')
AND C1.CRN IN (
SELECT MINOR_ELECTIVE_REQUIREMENTS.CRN
FROM MINOR_ELECTIVE_REQUIREMENTS
WHERE MINOR_ELECTIVE_REQUIREMENTS.Minor_Name = 'Computer Science')
AND COURSE_TAKEN.H_Number = 1;
如果学生没有以下类别之一的课程,则需要使用外部联接:
Select nvl(sum(C.Credit_Hours),0) As CoreCreditHours,
nvl(sum(C1.Credit_Hours),0) As ElectiveCreditHours
FROM COURSE_TAKEN
LEFT JOIN COURSE C ON
C.CRN = COURSE_TAKEN.CRN AND C.CRN IN(
SELECT MINOR_CORE_REQUIREMENTS.CRN
FROM MINOR_CORE_REQUIREMENTS
WHERE MINOR_CORE_REQUIREMENTS.Minor_Name = 'Computer Science')
LEFT JOIN COURSE C1 ON
C1.CRN = COURSE_TAKEN.CRN AND C1.CRN IN (
SELECT MINOR_ELECTIVE_REQUIREMENTS.CRN
FROM MINOR_ELECTIVE_REQUIREMENTS
WHERE MINOR_ELECTIVE_REQUIREMENTS.Minor_Name = 'Computer Science')
WHERE COURSE_TAKEN.H_Number = 1;
非常感谢你,太好了!