各位好, 小弟想請教一下各位
有關於子查詢中的 EXISTS 和 NOT EXISTS 的關念
底下的題目出自於唐箏資料庫應用第二回 P91頁
小弟雖然有講義, 但是沒有DVD, 所以是自己從文字中去理解
但是還是有些疑惑在, 所以麻煩各位指點一下
1.題目:列出所有不供應零件 P1 的供應商名稱
SELECT 供應商名稱
FROM 供應商
WHERE NOT EXISTS
(
SELECT *
FROM 專案供應零件
WHERE
供應商.供應商代號 = 專案供應零件.供應商代號 AND
零件代號 = 'P1'
)
這題小弟的理解,
先用子查詢, 找出所有有供應P1零件的供應商
在透過外面的 NOT EXIST 去找出 不供應零件P1 的供應商
舉例:
供應商中有 R1 = ( A, B, C, D, E),
供應 P1 零件的供應商有 R2 = (A, B, D)
不供應P1的零件商就是, C 和 E
R1 - R2 = ( C, E )
題目: 列出參與所有專案的供應商名稱
SELECT 供應商名稱
FROM 供應商
WHERE NOT EXISTS
(
SELECT *
FROM 專案
WHERE NOT EXISTS
(
SELECT *
FROM 專案供應零件
WHERE
供應商.供應商代號 = 專案供應零件.供應商代號 AND
專案.專案代號 = 專案供應零件.專案代號
)
)
這題小弟覺得連從題目變成這樣解的概念都沒有
不曉得是不是哪裡沒念到
麻煩各位了
謝謝
--
有關於子查詢中的 EXISTS 和 NOT EXISTS 的關念
底下的題目出自於唐箏資料庫應用第二回 P91頁
小弟雖然有講義, 但是沒有DVD, 所以是自己從文字中去理解
但是還是有些疑惑在, 所以麻煩各位指點一下
1.題目:列出所有不供應零件 P1 的供應商名稱
SELECT 供應商名稱
FROM 供應商
WHERE NOT EXISTS
(
SELECT *
FROM 專案供應零件
WHERE
供應商.供應商代號 = 專案供應零件.供應商代號 AND
零件代號 = 'P1'
)
這題小弟的理解,
先用子查詢, 找出所有有供應P1零件的供應商
在透過外面的 NOT EXIST 去找出 不供應零件P1 的供應商
舉例:
供應商中有 R1 = ( A, B, C, D, E),
供應 P1 零件的供應商有 R2 = (A, B, D)
不供應P1的零件商就是, C 和 E
R1 - R2 = ( C, E )
題目: 列出參與所有專案的供應商名稱
SELECT 供應商名稱
FROM 供應商
WHERE NOT EXISTS
(
SELECT *
FROM 專案
WHERE NOT EXISTS
(
SELECT *
FROM 專案供應零件
WHERE
供應商.供應商代號 = 專案供應零件.供應商代號 AND
專案.專案代號 = 專案供應零件.專案代號
)
)
這題小弟覺得連從題目變成這樣解的概念都沒有
不曉得是不是哪裡沒念到
麻煩各位了
謝謝
--
All Comments