如何用SQL查询全部学生都选了人课程号和课程名

学生关系(sno,sname),课程关系(cno,cname,tname),学习关系(sno,cno)以及某位学生没有选的课程名称... 学生关系(sno,sname),课程关系(cno,cname,tname),学习关系(sno,cno)
以及某位学生没有选的课程名称
展开
 我来答
badkano
推荐于2017-12-15 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885368
团长

向TA提问 私信TA
展开全部
1,全部学生都选了人课程号和课程名
select b.cno,b.cname
from 学生关系 a,课程关系 b,学习关系 c where a.sno=c.sno and b.cno=c.cno
group by b.cno,b.cname having count(*)=(select count(*) from 学生关系)

2,某位学生没有选的课程名称
select a.sname,b.cname
from 学生关系 a,课程关系 b,学习关系 c where a.sno=c.sno and b.cno=c.cno
group by a.sname,b.cname having count(*)<(select count(*) from 课程关系)

我这是列的每个学生没选的,要是查某位学生,加个条件就行
select a.sname,b.cname
from 学生关系 a,课程关系 b,学习关系 c where a.sno=c.sno and b.cno=c.cno
and a.sname='xxx'
group by a.sname,b.cname having count(*)<(select count(*) from 课程关系)
Urtica
2013-04-01 · 超过16用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:36.7万
展开全部
全部学生都选的课程号与课程名:
select * from (select C.cno,C.cname,count(1) as total from (select A.*,C.* from 学生关系统 as A,学习关系 as B,课程关系 as C where A.sno=B.sno and B.cno=C.cno ) as t group by C.cno,C.cname) as T where total=(select count(1) from 学生关系 group by sno)

某个学生没有选的课程名称:
select * from 课程关系 where cno no in( select cno from (select A.*,C.* from 学生关系统 as A,学习关系 as B,课程关系 as C where A.sno=B.sno and B.cno=C.cno ) T where sno='某个学生')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式