繁体   English   中英

SQL使用子查询而不是一对多连接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM