求出選修了所有課程的學生姓名

來源:互聯網
上載者:User

求出選修了所有課程的學生姓名

學生表 S(SNO int pk,SN varchar(8))  --SNO為學號 ,SN為學生姓名。
課程表 C(CNO int pk,CN varchar(50)) --CNO為課程號,CN為課程名
選修表 SC(SNO int pk,CNO int pk,SCORE number(7,2),fk(SNO,CNO) )  --SCORE為成績。

--以下語句為求出選修了所有課程的學生姓名.
SELECT SN
FROM s
WHERE (NOT EXISTS
          (SELECT *
         FROM c
         WHERE NOT EXISTS
                   (SELECT *
                  FROM sc
                  WHERE SNO = S.SNO AND CNO = C.CNO)))

解釋:沒有任何一門課程不再該生所選的課程中。

小朋友不會原因是不知道欄位的訪問規則,join 的查詢中後面的表可以用前面表中的欄位作為條件。在巢狀查詢中子查詢可以使用父查詢表中的欄位作為條件。

類似的題型還有:

1、求至少選修了學生學號為S003所選修的所有課程的學生姓名和學號。

 SELECT distinct SN,SNo

FROM SC SC2

WHERE (NOT EXISTS

          (SELECT CNO

         FROM SC SC1

         WHERE  SNO='S003' and CNO not in

                   (select Cno from Sc where SC2.SNO=Sc.SNo)))

解釋:

     沒有任何一門學號為S003學生所選修的課程編號不在該生所選的課程的編號中中。

注意此處該生與S003不是同一個意思。該生泛指合格學生。

 

 


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.