因此,我正在寻找一种方法来选择不属于关系表的表的属性。
我有 3 个表:Course、Student 和关系表 StudentCourse。 StudentCourse 具有外键 courseid 和 personid,它们是其他表中的主键。
我想知道是否可以通过sqlquery选择不属于类(class)的学生。
编辑:
学生。 列: 学生 ID varchar 主键 姓名 varchar
当然。 列: 类(class) ID int 自增 类(class)名称学生类(class) courseid int 主键外键 Studentid varchar 主键外键
这不是正确的代码,但它应该可以帮助您理解表格的各个部分。
我已经尝试过:
SELECT Student.studentid FROM Student INNER JOIN StudentCourse ON Student.studentid = StudentCourse.studentid WHERE StudentCourse.studentid ='null';
这显然行不通。我还尝试将关系表与学生表进行比较,看看学生 ID 是否不存在于 StudentCourse 表中。
如果我从 StudentCourse 中选择 *,我会得到所有有类(class)的学生。 前任: 类(class)ID:1 学生ID:199502159292
现在我想从学生表中选择所有没有类(class)的学生
例如: 学生号:199909091414 姓名:卡尔 姓:彼得森
有类(class)的学生不应该是可见的。
最佳答案
要选择注册类(class)的所有学生,您可以执行以下操作:
SELECT student_id
FROM StudentCourse
WHERE course_id=*<value>*
我选择了最简单的方法,即通过ID选择。如果您需要按名称或其他类(class)列进行选择,您应该使用:
SELECT sc.student_id
FROM StudentCourse AS sc
INNER JOIN Course AS c ON sc.course_id=c.course_id
WHERE c.course_name=*<value>*
现在,完整的查询:
SELECT *
FROM Student AS s
WHERE s.student_id NOT IN (
SELECT student_id
FROM StudentCourse
WHERE course_id=*<value>*
)
这将选择学生表中未注册类(class)的所有学生。
关于java - 选择不属于关系表一部分的表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37361266/