2016-05-04 47 views
1

我有五個表:1.課程2.departmetns 3.students 4. enroll_courses 5.resultsMySQL查詢:如何寫內心的選擇加入查詢

Departments has id 
Courses has id, department_id 
Students has id,department_id 
Enroll_courses has id, courses_id,students_id 
Results has id, courses_id,students_id 

我必須選擇courses.name這是在enroll_courses表,但不在結果表中。

我寫了查詢,我無法得到確切的答案。如果有人能幫我找到解決方案。

查詢:

SELECT courses.name 
FROM courses 
    JOIN departments ON courses.department_id = departments.id 
    JOIN students ON departments.id = students.department_id 
WHERE students.id = 9 
    AND courses.id IN (SELECT course_id FROM enroll_courses) 
+0

讓我們知道您的表格的設計,我們將能夠提供幫助。編輯原始問題,不要在評論中回覆。 –

+0

您在這裏使用MySQL或MS SQL Server嗎?不要標記不涉及的產品。 – jarlh

+0

您聲明您的課程表具有id,department_id,但是您引用了courses.name。更新所有領域,我們將有更多的機會。 –

回答

1

它有點瞎拍,因爲你沒有提供任何DDL's,但我以爲results表有COURSE_ID列,如果不是,將其更改爲的關係。您可以使用EXISTS()NOT EXISTS()

SELECT courses.name 
FROM courses 
    JOIN departments ON courses.department_id = departments.id 
    JOIN students ON departments.id = students.department_id 
WHERE EXISTS(SELECT 1 FROM enroll_courses ec WHERE ec.course_id = courses.id) 
    AND NOT EXISTS(SELECT 1 FROM results r WHERE r.course_id = courses.id) 
    AND students.id =9 
+0

您的查詢中存在語法錯誤的問題,我無法得到它。你能檢查我更新的Qus嗎? – User57

+0

@RandeepSingh我讓你把它摘下來。立即嘗試。 – sagi

+0

我早些時候運行你的上面的查詢,並得到3個錯誤。 分析過程中發現3個錯誤。 '無法識別的關鍵字。 (在位置285附近的「不」) 無法識別的關鍵字。 (在位置289的「EXISTS」附近) 意外的標記。 (接近「(」在位置295)' – User57