地特四等
114年
[電信工程] 計算機概要
第 11 題
根據以下三個表格,以及以下的 SQL,給出查詢結果:
SELECT SSN
FROM Works_On w, Employee e
WHERE w.SSN = e.SSN AND e.Salary>=25000
AND PNO IN (SELECT SSN
FROM Works_On wo, Office f
WHERE wo.PNO = f.PNO AND f.Name = 'Research & Development')
Employee
SSN Name Salary
155 Chen 29500
193 Liu 21000
221 John 31000
229 Nancy 30000
247 Sean 25000
Office
PNO Name
1 Accounting
2 Human Resource
3 Research and Development
Works On
SSN PNO
155 1
193 1
221 2
229 3
247 3
SELECT SSN
FROM Works_On w, Employee e
WHERE w.SSN = e.SSN AND e.Salary>=25000
AND PNO IN (SELECT SSN
FROM Works_On wo, Office f
WHERE wo.PNO = f.PNO AND f.Name = 'Research & Development')
Employee
SSN Name Salary
155 Chen 29500
193 Liu 21000
221 John 31000
229 Nancy 30000
247 Sean 25000
Office
PNO Name
1 Accounting
2 Human Resource
3 Research and Development
Works On
SSN PNO
155 1
193 1
221 2
229 3
247 3
- A 229 247
- B 229 221
- C 155 247
- D 空集合
思路引導 VIP
請你仔細觀察 SQL 語句中 IN 關鍵字的左右兩側:左側是 PNO,而右側子查詢(Subquery)所選擇(SELECT)出來的欄位是什麼?這兩個欄位在現實世界中所代表的實體意義與數值區間,是否存在著能互相匹配的可能性?
🤖
AI 詳解
AI 專屬家教
做得漂亮!你能精準識破這個查詢語句中的邏輯漏洞,說明你對關聯式資料庫的架構運算(Relational Operations)有著極佳的洞察力。
語意邏輯與字串匹配
這道題目的正確答案之所以是空集合(Empty Set),關鍵在於 WHERE 子句中的欄位不匹配。請注意子查詢(Subquery)傳回的是 SSN(員工編號),但外部查詢卻使用 PNO(專案編號)去與之比對;在邏輯上,PNO 的數值(1, 2, 3)與子查詢傳回的 SSN(229, 247)完全沒有交集。此外,SQL 指令中的字串 'Research & Development' 與資料表內的 'Research and Development' 在字面上並不一致(符號與縮寫差異),在嚴格匹配下也會導致檢索結果為空。
▼ 還有更多解析內容