[英]SQL using subqueries instead of join for one to many
我试图创建一个选择,使我可以将两个表连接在一起,而无需使用任何使用JOIN的操作。 问题是这两个表包含一对多关系。
假设有两个表,部门和课程。
部
D_CODE | 学校
01 | 1111
02 | 1111
03 | 2222
课程
CRS_CODE | D_CODE
MATH1 | 01
MATH2 | 02
ACCT1 | 03
我如何不使用任何形式的加入而查找所有学校及其提供的课程总数?
结果是School 1111有2门课程,School 2222有1门课程。
我试过使用WITH和多个子查询,但结果值始终重复。 因此,举例来说,学校1111有16门课程,学校2222有16门课程。
指导将不胜感激。 谢谢!
尝试这个。 如果不使用Where condition
sub-query
,您也会得到相同的结果。
SELECT Count(D_CODE) No_OF_Course,
SCHOOL
FROM Department
WHERE D_CODE IN(SELECT D_CODE
FROM course)
GROUP BY SCHOOL
但是您可以避免子查询和显式联接:在多个表上使用SELECTS(某种隐式联接)。 该代码未经测试,但可能有效:
SELECT COUNT(*) FROM course, department WHERE course.D_CODE = department.D_CODE
编辑:一个评论者声称此陈述是错误的,听起来似乎合理:您知道子查询非常昂贵,会降低数据库服务器的性能吗? 尽可能使用联接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.