2016-04-13 163 views
0

我有一個場景像這樣悶:有如下表​​:與Oracle SQL查詢

course_details

現在我所尋找的是找同學的細節 - 在這種情況下, Stu_id - 誰已在2016年註冊課程。

說例如 - 2016年有C1,C3和C4課程。在這些課程中,只有S1參加了所有這些課程。 S2和S3只在一些學校註冊。

所以我的查詢應該只給出S1的結果。

我嘗試使用子查詢因子分析,窗口函數,但無法獲得它沒有硬編碼的一些值。

+1

有當然ID的其它表的列表?我們怎麼知道沒有'C5'或'C6'? –

+0

你能更具體地瞭解你要找的細節嗎? – Barett

+0

另外,請向我們展示您嘗試過的代碼,以及爲什麼結果與您的要求不符。 – Kateract

回答

0

如何如下:

SELECT DISTINCT a.stu_id 
FROM course_details AS a 
WHERE 
    NOT EXISTS (
     SELECT NULL FROM course_details AS b 
     WHERE 
      b.enrol_dt = 2016 
      AND 
      NOT EXISTS (
       SELECT * FROM course_details AS c 
       WHERE c.c_id = b.c_id AND c.stu_id = a.stu_id 
      ) 
    );