免費開始練習
地特四等 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
  • 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' 在字面上並不一致(符號與縮寫差異),在嚴格匹配下也會導致檢索結果為空。

▼ 還有更多解析內容

🏷️ 相關主題

程式語言與資料結構
查看更多「[電信工程] 計算機概要」的主題分類考古題