這是我擁有的當前數據庫記錄,我只希望它顯示所有從未登記科學的學生的姓名。oracle SQL:在其所有記錄中不包含其他特定值的情況下選擇不同的值
Name | Subject | Year
-----------------------------------
Ian Lee | Math | 2008
Ian Lee | Science | 2008
Ian Lee | Econs | 2006
Marie-Ann | Geography | 2006
Marie-Ann | Literature | 2009
Natalie S. | Geography | 2006
Julienne | Math | 2008
Julienne | Science | 2008
Julienne | Literature | 2009
Liam | Literature | 2009
Liam | Econs | 2006
我還有一個學生記錄Emily Toh還沒有在任何課程中註冊。但是,正確的輸出應該是
Name
------------
Marie-Ann
Natalie S.
Emily Toh
Liam
這是我用來調用
SELECT DISTINCT en.Name
FROM ENROLLMENT en
WHERE NOT EXISTS (
SELECT st.Name
FROM STUDENT st
WHERE en.Name = st.Name
AND en.Subject = 'Science'
);
但它仍然給了我所有的學生姓名的顯示。
學生表和enrollemnt表是按照:
CREATE TABLE STUDENT(
Name VARCHAR2(50),
DOB DATE,
Address VARCHAR(70),
CONSTRAINT STUDENT_PKEY PRIMARY KEY (Name)
);
CREATE TABLE ENROLLMENT(
Name VARCHAR2(50),
Subject VARCHAR2(70),
Year Number(4),
CONSTRAINT ENROLLMENT_PK PRIMARY KEY (Name, Subject)
CONSTRAINT ENROLLMENT_FKEY FOREIGN KEY (Name) REFERENCES TO STUDENT (Name)
);
登記表設計的註冊和學生 – Avi
交換表名稱。 –
除了表格定義之外,請顯示來自兩者的樣本數據並標註每個數據。 –