一点解释:
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是该学生的课程。
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),因为学生已经被链接了。
答案 0 :(得分:0)
您可能需要在内部查询中添加另一个条件:
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
and m.cod_course = d.cod_course);
否则,它将匹配任何其他具有该cod_disc的cod_course。