gpt4 book ai didi

MYSQL连接拼图: inner and left join at the same time

转载 作者:可可西里 更新时间:2023-11-01 08:35:46 25 4
gpt4 key购买 nike

我有以下表格:

Schools
Teachers
Courses
XRefSchoolsTeachers
XRefCoursesTeachers

现在我正在尝试获取开设该类(class)的大学所有教师的名单,这些教师不教授该类(class)。到目前为止,我有:

SELECT *
FROM Courses
INNER JOIN XRefSchoolsTeachers
ON Courses.SchoolID = XRefSchoolsTeachers.SchoolID

这给了我开设该类(class)的学校所有教师的 ID,但现在我需要删除所有不反对 XRefCoursesTeachers 中该类(class) ID 的教师 ID >。我看了another question here关于如何删除不在另一个列表中的内容,为此我需要一个左连接。但我觉得我也需要一个内部加入,这样我就只能得到那些不在名单上的学校的老师 ><

例如

SELECT *
FROM Courses
INNER JOIN XRefSchoolsTeachers
ON Courses.SchoolID = XRefSchoolsTeachers.SchoolID
LEFT JOIN XRefCoursesTeachers
ON (XRefCoursesTeachers.TeacherID = XRefSchoolsTeachers.TeacherID
AND XRefCoursesTeachers.CourseID = Courses.ID)
WHERE Courses.ID = ? AND XRefSchoolsTeachers.TeacherID IS NULL

会给我任何其他学校任何其他类(class)的所有老师——这不是我想要的。我想要所有可以教类(class)但不是的老师。

这就像我需要在 XRefCourseTeachers.CourseID = Courses.ID 上进行内部联接,然后在 XRefCourseTeachers 的同一实例上使用 进行左联接TeacherID 以便我可以挑选出 NULL 结果。但我不知道该怎么做。

这怎么可能?我采取的方法是否正确?

最佳答案

SELECT *
FROM Courses
INNER JOIN XRefSchoolsTeachers
ON Courses.SchoolID = XRefSchoolsTeachers.SchoolID
left join XRefCoursesTeachers
on XRefCoursesTeachers.TeacherID = XRefSchoolsTeachers.TeacherID
where
XRefCoursesTeachers.TeacherID is null
and
Cousers.ID = ?

SELECT *
FROM Courses
INNER JOIN XRefSchoolsTeachers
ON Courses.SchoolID = XRefSchoolsTeachers.SchoolID
where
XRefCoursesTeachers.TeacherID not in (
select TeacherID
from XRefCoursesTeachers
where XRefCoursesTeachers.CourseID = Courses.ID
)
and
Courses.ID = ?

关于MYSQL连接拼图: inner and left join at the same time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12477102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com