列出參與所有專案的供應商名稱 SQL巢狀查詢 - 考試
By Tracy
at 2018-06-14T01:24
at 2018-06-14T01:24
Table of Contents
Q1 解法:
select t2.供應商名稱
from 供應商 as t1,專案供應零件 as t2
where t1.供應商代號 = t2.供應商代號
group by t2.供應商名稱
having count(distinct t2.專案代號) = ( select count(*) from 專案 )
說明:
1. 紅色部份: 相同供應商下,所參與不同的專案個數
2. 黃色部份: 專案總數
3. 紅色 = 黃色的時候,表示該供應商參與所有專案
Q2 解法:
select distinct t1.供應商名稱
from 供應商 as t1,專案供應零件 as t2
where t1.供應商代號 = t2.供應商代號 and exists (
select *
from 供應商 as t3,專案供應零件 as t4,
where t3.供應商名稱 = '一級棒' and t3.供應商代號 = t4.供應商代號
and t2.專案代號 = t4.專案代號
)
說明:
1. 黃色部份: 「外層供應商」參與的專案 = 「一級棒」所參與的專案
2. 紅色部份: 供應商名稱去除重複
※ 引述《gn01398532 (GOA)》之銘言:
: 此題已有人問過,但我還是不解要如何構築此兩層巢狀查詢
: Q1:列出參與所有專案的供應商名稱?
: 題目所給表格:https://imgur.com/FqDfBeX
: 解法是用:不存在任何專案是沒有參與的
: 解答就像此網站的解析:https://goo.gl/fZwjDj
: 巢狀查詢是要視為FROM後面的表格一起看嗎?
: 為何第二個FROM後面是專案,最後一個FROM是看專案供應零件?
: 如果我先從最內層解析,
: 最後一個WHERE的條件是連結到兩個更外層查詢的表格(供應商和專案)
: 就代表我得同時看到最外層的 供應商.專案.專案供應零件 的表格
: 我的問題點在於要如何一步一步建立多層的巢狀查詢,
: 由內向外、由外向內,或是同時?
: 這種巢狀查詢要怎麼練習呢?
: ------------------------------------------------------------------------------
: 另外,關於"所有"的sql語法,何時要用"負負得正"的方式來解(即不存在...沒有參與)
: 何時要用正向的存在方式來解(即存在)?
: 例如 Q2.列出所有有參與"一級棒供應商有參與的專案"的供應商
: 解答從"找出供應商其不存在任何一級棒參與的專案是沒有參與的"
: 感謝各位,搞得我頭好痛= =
--
select t2.供應商名稱
from 供應商 as t1,專案供應零件 as t2
where t1.供應商代號 = t2.供應商代號
group by t2.供應商名稱
having count(distinct t2.專案代號) = ( select count(*) from 專案 )
說明:
1. 紅色部份: 相同供應商下,所參與不同的專案個數
2. 黃色部份: 專案總數
3. 紅色 = 黃色的時候,表示該供應商參與所有專案
Q2 解法:
select distinct t1.供應商名稱
from 供應商 as t1,專案供應零件 as t2
where t1.供應商代號 = t2.供應商代號 and exists (
select *
from 供應商 as t3,專案供應零件 as t4,
where t3.供應商名稱 = '一級棒' and t3.供應商代號 = t4.供應商代號
and t2.專案代號 = t4.專案代號
)
說明:
1. 黃色部份: 「外層供應商」參與的專案 = 「一級棒」所參與的專案
2. 紅色部份: 供應商名稱去除重複
※ 引述《gn01398532 (GOA)》之銘言:
: 此題已有人問過,但我還是不解要如何構築此兩層巢狀查詢
: Q1:列出參與所有專案的供應商名稱?
: 題目所給表格:https://imgur.com/FqDfBeX
: 解法是用:不存在任何專案是沒有參與的
: 解答就像此網站的解析:https://goo.gl/fZwjDj
: 巢狀查詢是要視為FROM後面的表格一起看嗎?
: 為何第二個FROM後面是專案,最後一個FROM是看專案供應零件?
: 如果我先從最內層解析,
: 最後一個WHERE的條件是連結到兩個更外層查詢的表格(供應商和專案)
: 就代表我得同時看到最外層的 供應商.專案.專案供應零件 的表格
: 我的問題點在於要如何一步一步建立多層的巢狀查詢,
: 由內向外、由外向內,或是同時?
: 這種巢狀查詢要怎麼練習呢?
: ------------------------------------------------------------------------------
: 另外,關於"所有"的sql語法,何時要用"負負得正"的方式來解(即不存在...沒有參與)
: 何時要用正向的存在方式來解(即存在)?
: 例如 Q2.列出所有有參與"一級棒供應商有參與的專案"的供應商
: 解答從"找出供應商其不存在任何一級棒參與的專案是沒有參與的"
: 感謝各位,搞得我頭好痛= =
--
Tags:
考試
All Comments
By Agatha
at 2018-06-16T17:38
at 2018-06-16T17:38
By Charlie
at 2018-06-20T16:20
at 2018-06-20T16:20
Related Posts
信託 投信投顧 考試心得
By Blanche
at 2018-06-13T23:42
at 2018-06-13T23:42
3小時讀通有機化學
By Skylar DavisLinda
at 2018-06-13T23:23
at 2018-06-13T23:23
應屆畢業準備一般民政
By Vanessa
at 2018-06-13T22:08
at 2018-06-13T22:08
共犯需要審查阻卻違法事由嗎?
By Erin
at 2018-06-13T20:56
at 2018-06-13T20:56
電力系統正相序電流推導疑問
By Daph Bay
at 2018-06-13T20:09
at 2018-06-13T20:09