阿摩線上測驗 登入

申論題資訊

試卷:110年 - 110 專技高考_資訊技師:資料結構與資料庫及資料探勘#104174
科目:資料結構與資料庫及資料探勘
年份:110年
排序:0

題組內容

四、根據以下模擬 1922 實名制簡訊關聯資料表架構,寫出不同查詢的 SQL 表示。
 Location (LID, LPID, Lname) // 位置編號,位置上層編號,位置名稱
 Message (MID, phoneNum, LID, Date) // 1922 簡訊
其中 LPID 為 LID 的更上層區域編號,若 LPID 為 0 則無上層區域,如: 某甲單位上層區域為臺北市,系統會有兩筆 Location 資料(10, 1, 甲) , (1, 0, 臺北市)。

申論題內容

(二)查詢 LID = 10 位置在 2021/5/10 至 2021/5/17 間與電話號碼 09XX555666 到訪日期均相同的所有電話號碼。(5 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
這個查詢要求找出在指定日期範圍內,與特定電話號碼在同一個位置(LID = 10)且訪問日期相同的所有其他電話號碼。為了實現這個查詢,我們需要比較訪問日期和電話號碼,這可以通過自我連接 Message 表來完成。下面是相應的 SQL 查詢:

SELECT m2.phoneNum
FROM Message m1
JOIN Message m2 ON m1.Date = m2.Date AND m1.LID = m2.LID
WHERE m1.LID = 10
AND m1.phoneNum = '09XX555666'
AND m1.Date BETWEEN '2021-05-10' AND '2021-05-17'
AND m2.phoneNum != '09XX555666';
SQL 查詢說明:
SELECT 子句用來選擇我們需要顯示的資料列,這裡是 m2.phoneNum,即與目標電話號碼同日訪問的其他電話號碼。
FROM 和 JOIN 子句設置了從 Message 表中抓取數據,並且根據日期和地點進行自連接。m1 和 m2 是同一表的兩個別名,分別代表兩次不同的訪問。
ON 條件確定了連接的條件,這裡是日期和地點必須相同。
WHERE 條件用於過濾特定的紀錄:
m1.LID = 10 指定地點。
m1.phoneNum = '09XX555666' 指定電話號碼。
m1.Date BETWEEN '2021-05-10' AND '2021-05-17' 指定日期範圍。
m2.phoneNum != '09XX555666' 確保不返回查詢電話號碼本身。
這個查詢可以有效地找出在特定時間和地點,與指定電話號碼同日訪問的所有其他電話號碼。