我想知道有多少学生注册了与某门课程相关的所有单元。
我试过了。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
或者您可以在公共字段