到目前为止我无法弄清楚,我有这些表:
- 学生- 列:id、name
- stud_class - 列:students_id、class_id
- 类- 列:id、courses_id
- 课程- 列:id、name
我需要选择在stud_class表中没有匹配行的学生或不在给定课程的班级中的学生(给定课程是一个参数)。
例如:选择没有任何班级的学生或在班级中的学生,但不选择course.id = 2
.
到目前为止我这样做了,但它不起作用,查询不返回任何行。我知道这有点令人困惑,但我不知道在这种情况下如何使用 JOINS。
SELECT students.id, students.name
FROM students, stud_class, class
WHERE ( NOT (students.id = stud_class.students_id) )
OR ( (students.id=stud_class.students.id) AND
(stud_class.class_id=class.id) AND
( NOT (class.course_id=2) )
);