sql 選了全部課程的學生(not exists雙重否定)

 

-- 上過王魯的課
SELECT sname
FROM s
WHERE sno in (
    SELECT DISTINCT sno
    FROM sc
    join c
    on sc.cno = c.cno
    JOIN t 
    on c.tno = t.tno
    WHERE t.tname = '王魯'
)


-- 選了全部的課程
SELECT sname
FROM s
WHERE not EXISTS(  
	SELECT *
	FROM c
	WHERE not EXISTS(
				SELECT *
				FROM sc
				WHERE sc.sno = s.sno and sc.cno = c.cno
	)
)


-- 選了費玉奎 全部的課
SELECT sname
FROM s
WHERE not EXISTS(
        SELECT *
        FROM c,t
        WHERE c.tno = t.tno and t.tname = '費玉奎' and not EXISTS(
                SELECT * 
                FROM sc
                WHERE sc.sno = s.sno  and sc.cno = c.cno 
        )
)

-- 選了 1號老師 全部的課程
SELECT sname
FROM s
WHERE not EXISTS(
        SELECT *
        FROM c
        WHERE c.tno = 1 and not EXISTS(
                SELECT * 
                FROM sc
                WHERE sc.sno = s.sno  and sc.cno = c.cno 
        )
)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章