Sql 选择没有任何学生注册的部分

Sql 选择没有任何学生注册的部分,sql,join,oracle11g,Sql,Join,Oracle11g,我想选择所有没有学生注册的部分 以下是三个表格: 注册 学生id,章节id 部分 课程编号,章节编号 课程 课程id,说明 输出表应如下所示: course|u id | description | section|u id 我不是加入使用的舒尔。所以你想要 SELECT course_id , description , section_id FROM COURSES INNER JOIN SECTIONS ON COURSES.course_i

我想选择所有没有学生注册的部分

以下是三个表格:

注册
学生id,章节id

部分
课程编号,章节编号

课程
课程id,说明

输出表应如下所示:
course|u id | description | section|u id

我不是加入使用的舒尔。

所以你想要

SELECT
    course_id
    , description
    , section_id
FROM
    COURSES
INNER JOIN
    SECTIONS
ON
    COURSES.course_id = SECTIONS.course_id
LEFT JOIN
    ENROLLMENTS
ON
    ENROLLMENTS.section_id = SECTIONS.section_id
WHERE
    ENROLLMENTS.student_id IS NULL;

这将从
课程
部分
获取所有信息,然后将其加入到
注册
,保留没有注册的
课程
部分
的所有信息。然后通过选择
注册
学生id
的位置,我们可以在
部分
中找到所有没有
部分id
的条目,为什么不使用子查询

SELECT
    sections.course_id,
    courses.description,
    sections.section_id
FROM
    courses INNER JOIN sections ON courses.course_id = sections.course_id
WHERE
    courses.section_id NOT IN (SELECT section_id FROM enrollments)