如何计算与ORACLE where表达式不直接相关的字段



我想知道有多少学生注册了与某门课程相关的所有单元。

我试过了。
SELECT        COUNT(studentID) AS Expr1
FROM            Course CROSS JOIN
                         Enrolment
WHERE        (Course.courseCode = 'S4000')

但我得到3,每次为不同的课程代码。

对于S4000应该是1。我总共有3个学生。

您没有告诉我们列名,所以我创建:

SELECT cu.courseCode, COUNT(e.StudentID) AS tot_Students
FROM COURSEUNIT cu INNER JOIN ENROLMENT e
ON cu.unitCode = e.couseCode    
GROUP BY cu.courseCode    

这是因为在交叉连接中第一个表中的每条记录都与第二个表中的其他记录相关联在这种情况下假设有3个学生和3门课程

学生表

Id | Name

1 | abc

2 | pqr

3 | xyz

课程

代码|名称

S4000 | c1

S4001 | c2

S4002 | c3

交叉连接表

学生。Id |学生。名称|课程代码| courses.name

1| abc| S4000 | c1

2 | pqr| S4000 | c1

3 | xyz| S4000 | c1

1| abc| S4001 | c2

2 | pqr| S4001 | c2

3 | xyz| S4001 | c2

1| abc| S4002 | c3

2 | pqr| S4002 | c3

3 | xyz| S4002 | c3

现在你可以看到他们为每门课程创建了3条记录,所以你每次得到3个答案。

所以在你的查询中你应该有相同的公共字段来获取所需的记录例如有傅立叶键关系

在where子句中添加公共字段,如

SELECT COUNT(studentID) AS Expr1

FROM Course CROSS JOIN招生(课程。courseCode = 'S4000')

        and Course.studentID=Enrolment.studentID

或者您可以在公共字段

上使用内连接

最新更新