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的情况。