阿摩線上測驗 登入

申論題資訊

試卷:110年 - 110 一般警察特種考試_二等_刑事警察人員數位鑑識組:資料庫管理與應用#101695
科目:資料庫管理與運用
年份:110年
排序:0

題組內容

二、下面一個資料庫三個表格,分別代表賽車手(Racer)資料之編號(RID)、姓名(Name)、手機(CellPhone)、評等(Rating)(資料值為 1-10 間整數,越大越好)、年齡(Age)。跑車(Sports_Car)資料之賽車編號(SNum)、牌照號碼(License_Num)、引擎號碼(Engine_Num)、可開的最高速度(Max_Speed) 、顏色(Color) (資料值如 red, green, yellow 等各種顏色)。 駕駛(Drive)資料之某賽車手編號(RID)於某天(Date)(格式為 YYYY-MM-DD)開某跑車編號(SNum)。
Racer (RID, Name, CellPhone, Rating, Age)
 Sports_Car (SNum, License_Num, Engine_Num, Max_Speed, Color)
 Drive (RID, SNum, Date)
請以 SQL 語言,寫出下面查詢:

申論題內容

(一)在 2021-06-06 當天沒開紅色跑車的賽車手姓名。(8 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
要查詢在2021-06-06當天沒有開紅色跑車的賽車手姓名,我們可以使用以下SQL語句。這個查詢通過首先找到當天開過紅色跑車的賽車手,然後從所有賽車手中排除這些賽車手來達到目的。
sql
複製程式碼
SELECT R.Name
FROM Racer R
WHERE R.RID NOT IN (
    SELECT D.RID
    FROM Drive D
    JOIN Sports_Car SC ON D.SNum = SC.SNum
    WHERE D.Date = '2021-06-06' AND SC.Color = 'red'
);
查詢解釋
內部查詢(子查詢):
sql
複製程式碼
SELECT D.RID
FROM Drive D
JOIN Sports_Car SC ON D.SNum = SC.SNum
WHERE D.Date = '2021-06-06' AND SC.Color = 'red'
這部分查詢返回所有在2021-06-06當天開過紅色跑車的賽車手的編號(RID)。使用 JOIN 連接 Drive 和 Sports_Car 表格,確保只選取紅色跑車(SC.Color = 'red')並且在特定日期(D.Date = '2021-06-06')開車的記錄。
外部查詢:
sql
複製程式碼
SELECT R.Name
FROM Racer R
WHERE R.RID NOT IN (內部查詢)
這部分查詢從 Racer 表格中選取那些編號(RID)不在內部查詢結果中的賽車手。也就是說,這些賽車手在2021-06-06當天沒有開紅色跑車。
這樣,最終結果會返回所有在指定日期沒有開紅色跑車的賽車手姓名。