我有2个表,一个叫做课程,另一个叫做course_tutor_link。我正在尝试获得导师未订阅的所有课程的列表。这将是一个简单的左连接,但因为在一开始我将有没有辅导员的课程,这似乎搞乱了代码,到目前为止我有:
SELECT c.course_id, c.course,
users_id
FROM course AS c
LEFT JOIN course_tutor_link AS ctl
USING (course_id)
GROUP BY course_id
这将为我提供所有课程,包括用户订阅的课程(约11行),一旦我尝试使用users_id进行过滤,我自动也会失去所有没有导师的课程附上例如。
SELECT c.course_id, c.course
FROM course AS c
JOIN course_tutor_link AS ctl
USING (course_id)
WHERE users_id !=9
它只是我导师订阅的课程。通过SO查看我注意到使用子查询并不存在,但我只是无法获得正确的语法,我得到的是没有返回的行,我的查询是:
SELECT c.course_id, c.course,
users_id
FROM course AS c
LEFT JOIN course_tutor_link AS ctl
USING (course_id)
WHERE NOT EXISTS (SELECT course_id FROM course_tutor_link WHERE users_id = 9)
我显然做了一些愚蠢的事情,但我不知道是什么
问候
禅
答案 0 :(得分:1)
SELECT c.course_id, c.course
FROM course AS c
LEFT JOIN course_tutor_link AS ctl
ON c.course_id=ctl.course_id AND ctl.user_id=9
WHERE ctl.course_id IS NULL
答案 1 :(得分:0)
或
SELECT course_id, course
FROM course
WHERE course_id NOT IN (SELECT course_id FROM course_tutor_link WHERE users_id=9)