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

时间:2014-11-19 01:32:27

标签: mysql sql select join db2

我正在尝试创建一个select,它允许我将两个表连接在一起而不使用任何使用JOIN的操作。问题是这两个表包含一对多的关系。

假设有两个表,即部门和课程。


D_CODE |学校
01 | 1111
02 | 1111
03 | 2222

课程
CRS_CODE | D_CODE
MATH1 | 01
MATH2 | 02
ACCT1 | 03

如何在不使用任何类型的加入的情况下找到所有学校及其提供的课程总数?
结果是学校1111有2门课程,学校2222有1门课程 我尝试过使用WITH和多个子查询,但结果值总是重复。所以它会说学校1111有16门课程,学校2222有16门课程(例如)。


指导将非常感激。谢谢!

2 个答案:

答案 0 :(得分:1)

试试这个。如果不在sub-query中使用Where condition,您也会得到相同的结果。

SELECT Count(D_CODE) No_OF_Course,
       SCHOOL
FROM   Department
WHERE  D_CODE IN(SELECT D_CODE
                 FROM   course)
GROUP  BY SCHOOL 

答案 1 :(得分:0)

但是你可以避免子查询和显式连接: 在多个表上使用SELECTS(某种隐式连接)。本规范未经过测试,但可能有效:

SELECT COUNT(*) FROM course, department WHERE course.D_CODE = department.D_CODE

编辑:评论者声称这种说法是错误的,听起来很合理: 您知道子查询非常昂贵并且会破坏您的数据库服务器性能吗?尽可能使用连接。