2017-08-31 71 views
0

轉到學生的一些屬性鏈接來查看錶 錶鏈接:https://www.scribd.com/document/357739284/DBDI-Relational-Schema-Data嘗試了SQL選擇誰註冊和未註冊的模塊

我所試圖做的事: 試圖顯示學生姓名,電子郵件,和的moduleId誰註冊了一個模塊,也誰是沒有登記的的moduleId同一名單上顯示的學生他們的結果

SQL我嘗試了,但問題:

SELECT sName, email, Module.moduleID, Module.results 
FROM Student, Module, Registration 
WHERE Student.studentID = Registration.studentID AND ModuleID.moduleID = Registration.moduleID 
UNION 
SELECT sName, email, Module.moduleID, Module.results 
FROM student 
LEFT JOIN Registration ON Student.studentID = Registration. StudentID 
WHERE Registration.moduleID IS NULL; 

回答

0

最後左連接中的點(。)和StudentID之間存在一個空格。該空間需要被刪除,如下所示。我還將上部查詢更改爲ANSI標準語法以與底部查詢保持一致。在上面的查詢中,模塊表被錯誤地命名爲ModuleID。 Student和Module之間的連接鍵不正確。更正爲StudentID。

SELECT sName, email, Module.moduleID, Registration.results 
FROM Student --<-- changed to ANSI Standard syntax 
    INNER JOIN Registration on Student.studentID = Registration.studentID 
    INNER JOIN Module on Registration.ModuleID = Module.ModuleID --< Fixed Module table name 
UNION 
SELECT sName, email, Registration.moduleID, Registration.results 
FROM Student 
    LEFT JOIN Registration ON Student.StudentID = Registration.StudentID 
WHERE Registration.ModuleID IS NULL; 
+0

仍然得到一個小錯誤。選擇線下UNION說無效的標識符 –

+0

@Anthony你需要注意列的存儲位置。你在混合導致問題的列和表。 – LAS