一个关系代数的问题,数据库中的表如下图所示:问题是:查询至少选修了 C1 课程和 C3 课程的学生学号.
结果为 πSno,Cno(SC)÷πCno(σCno=c1∨Cno=c3(C))问题是这个结果是针对"至少"而言的,那么如果我想选出选修了 C1 和 C3 而且就这两门而且没有选修其它课程的学生学号呢,怎么办?
我想用 SC 和 SC 连接一下,然后用 ∧ 选出同时具有 C1 和 C3 的,但是这样又不行,没办法重命名 SC 啊,也就没法这样做了,大家有什么办法?图看的不是很清楚,大家见谅一下!

解决方案 »

  1.   

    结果为 πSno,Cno(SC)÷πCno(σCno=c1∨Cno=c3(C)) 
    --------
    这个还真没看懂,根据1楼的表,到底需要什么样的结果呢?
      

  2.   

    SELECT 
    NUM 
    FROM TB 
    WHERE CLASS IN('C1','C3') 
    GROUP BY NUM HAVING COUNT(1)>=2
      

  3.   


    需要关系代数表达式而不是 SQL 语句啊!
      

  4.   

    我后来去想了一下,确实是不能在关系代数式当中重命名 SC 的,因为没有这样的写法,在 SQL 语句中是可以按照你的思路来完成的。到目前我还是没有想出来怎样解释和理解才算正确。
      

  5.   

    1、 选出选了c1和c3的学生的学号(这个没什么难度)
    2、 选出选了除了c1和c3两门课的学生
    3、1-2