這個題目是資料庫關聯式代數裡面的非基本運算中的除法運算。
非基本運算的意思是可以用(其他)基本運算求出來。
一個(非基本)除法運算,必須用到基本運算的差集運算兩次(外加join 等運算)才能
表達。
(兩次)差集運算,在SQL語法就用到 not exist (兩次), 這就是樓主說的 負負得正
(負兩次)。
用 count 不保證一定會得到解。
用not exist兩次雖麻煩但是是正道。
※ 引述《gn01398532 (GOA)》之銘言:
: 此題已有人問過,但我還是不解要如何構築此兩層巢狀查詢
: Q1:列出參與所有專案的供應商名稱?
: 題目所給表格:https://imgur.com/FqDfBeX
: 解法是用:不存在任何專案是沒有參與的
: 解答就像此網站的解析:https://goo.gl/fZwjDj
: 巢狀查詢是要視為FROM後面的表格一起看嗎?
: 為何第二個FROM後面是專案,最後一個FROM是看專案供應零件?
: 如果我先從最內層解析,
: 最後一個WHERE的條件是連結到兩個更外層查詢的表格(供應商和專案)
: 就代表我得同時看到最外層的 供應商.專案.專案供應零件 的表格
: 我的問題點在於要如何一步一步建立多層的巢狀查詢,
: 由內向外、由外向內,或是同時?
: 這種巢狀查詢要怎麼練習呢?
: