P粉7998853112023-08-31 10:19:18
這是我的方法
步驟1: 建立一個帶有兩個欄位的表,student1和student2,其中包含學生的唯一組合
例如:
RNO1 RNO2 1 2 1 3 2 3
步驟2: 建立一個表,為上一個表的每個不同的DeptId新增一個唯一的DeptId
例如:
RNO1 RNO2 DeptId 1 2 IME 1 2 CHE 1 2 ECO 1 3 IME 1 3 CHE 2 3 ECO
步驟3: 最後,只保留RNO1和RNO2在每個DeptId中都選修了相同課程的元組。
以下是一個範例,其中rno1_rno2_deptid指的是上面的表格
SELECT
*
FROM
rno1_rno2_deptid as d
WHERE
NOT EXISTS((SELECT DISTINCT CNO FROM Register AS r WHERE r.RNO = d.RNO1 AND r.DeptId = d.DeptId)
MINUS
(SELECT DISTINCT CNO FROM Register AS r WHERE r.RNO = d.RNO2 AND r.DeptId = d.DeptId))
以上只選擇RNO1和RNO2在同一系別中具有相同CNO的情況。