資料庫的 子查詢和 NOT EXISTS 關念求教 - 考試

Table of Contents

謝謝你

: 用原po第一題習慣的方式來看的話

是說有什麼其他的角度去想這樣的題目嗎?!
補習班是怎麼教的呢??

因為如果不曉得人家的思考方向, 那這樣下次出題變化一下不曉得了

比較希望搞懂是怎麼去想的



底下我有針對一些不懂的地方又提出了一些疑問

謝謝各位

: 假設有供應商A,B,C,D
: 專案1,2,3
: A沒有任何專案
: B有1號專案 簡寫為B1
: C有1,2號專案 簡寫為C1,C2
: D有全部專案 簡寫為D1,D2,D3
: 下面以(一)(二)(三)的順序來看
: 不知道有沒有表達錯誤的地方
: 請見諒


:
: : 題目: 列出參與所有專案的供應商名稱
: : SELECT 供應商名稱
: (三)^^^^^這裡是所有供應商中 沒有出現在(二)中的 所以是ABCD-ABC=D

: : FROM 供應商
: : WHERE NOT EXISTS
: : (
: : SELECT *
: (二)^^^^^^這裡是取所有供應商與專案的排列組合減去(一)中列出的組合
: 也就是 {A1~D3} -{B1,C1,C2,D1,D2,D3} = {A1,A2,A3,B2,B3,C3}
^^^^^^^
這邊不懂的是, 為何這邊是 {A1, A2, A3, B1, B2, B3, D1, D2, D3}???
A1不是沒任何專案嗎?

: : FROM 專案
: : WHERE NOT EXISTS
: : (
: : SELECT *
: (一)^^^^^^^^這裡查出了 B1,C1,C2,D1,D2,D3
找出所有有供應的廠商

: : FROM 專案供應零件
: : WHERE
: : 供應商.供應商代號 = 專案供應零件.供應商代號 AND
: : 專案.專案代號 = 專案供應零件.專案代號
: : )
: : )
: : 這題小弟覺得連從題目變成這樣解的概念都沒有
: : 不曉得是不是哪裡沒念到
: : 麻煩各位了
: : 謝謝
:
: --

All Comments

Zanna avatarZanna2014-03-14
因為(二)中的where並沒有 XX = YY 這種敘述 所以專案會與
第一層的供應商 join出所有的組合
Liam avatarLiam2014-03-16
抱歉, 這邊第一層是指(一), 還是最外層那個?
Kyle avatarKyle2014-03-19
(一)這邊沒有供應商
Damian avatarDamian2014-03-23
最外層那個 也就是(三)那裡的from
Zora avatarZora2014-03-24
用程式語言的角度去看吧 每層SELECT都是一個迴圈
Lily avatarLily2014-03-24
想成foreach ...