【发布时间】:2016-07-12 14:40:08
【问题描述】:
一点解释:
Ids 是建立学生和学科之间关系的表。
Matrix是所有课程的全部课程表。
所以,我正在尝试获取仍然不与学生相关的学科,换句话说,我想获取所有剩余的学科。
这是我的代码:
SELECT d.cod_disc, cod_course
FROM students s
JOIN ids i ON s.mat_alu = i.mat_alu
JOIN disciplines d ON i.cod_disc = d.cod_disc
WHERE s.mat_alu = 78839
AND NOT EXISTS (SELECT 1
FROM matrix m
WHERE m.cod_disc = d.cod_disc);
我怎样才能让它工作?它什么也没返回。
编辑:
第一次查询: -- 主SELECT
COD_DISC COD_COURSE
-------- ----------
335 13
3824 13
3831 13
3835 13
6235 13
6237 13
SELECT cod_disc, cod_course * FROM matrix WHERE cod_course = 13 -- 13 是该学生的 course.id。
COD_DISC COD_COURSE
-------- ----------
3824 13
3825 13
3826 13
3827 13
3828 13
3829 13
3830 13
3831 13
3832 13
3833 13
3834 13
3835 13
因此,在我的查询中,我想返回几乎所有的值(3824、3831 和 3835),因为学生已经被链接。
【问题讨论】:
-
相信我。它以应有的方式工作。显然,来自学科的每个
cod_disc在matrix中至少有 1 个匹配行。当然,鉴于您对mat_alu的附加条件。 -
@ConsiderMe 我添加了更多信息,你能看一下吗?
标签: oracle inner-join not-exists