我有两个具有以下模式的MySql表
Courses(CNO:CHAR(10),CName:VARCHAR(50), DeptId:CHAR(3)):每门课程都有一个唯一的ID叫做CNO Register(RNO:CHAR(10), CNO:CHAR(10), Year:INTEGER, Sem:INTEGER, Grade:CHAR)
现在的任务是找到所有满足(r1,r2,d)的元组,其中学号为r1的学生完成了学号为r2的学生所完成的所有DeptId为ID的部门的课程。
我的方法是首先找到学号为r2的学生在该部门完成的所有课程,然后类似地找到学号为r1的学生在该部门完成的所有课程,并比较它们是否相同。但我不知道这样是否正确,也不知道如何比较这两个结果。
这是我用来检查特定部门中学号为r2的学生完成的所有课程的代码:
这是代码和数据DB Fiddle的链接
这是我的方法
步骤1:创建一个带有两列的表,student1和student2,其中包含学生的唯一组合
例如:
步骤2:创建一个表,为上一个表的每个不同的DeptId添加一个唯一的DeptId
例如:
步骤3:最后,只保留RNO1和RNO2在每个DeptId中都选修了相同课程的元组。
以下是一个示例,其中rno1_rno2_deptid指的是上面的表
以上只选择RNO1和RNO2在同一系别中具有相同CNO的情况。