自己做到这个部分一直迷惑,网上有很多种解答,我也突然有了思考,暂且记下。
标准答案是图片这样
我们可能最内层它的意义就是某人所选修的全部课程
倒数第二层就是从课程表中选择最里层中(某人选修的所有课程中)所缺失的,如果这个人把所有的课选完了,那么这一层查找为空,反之只要没选完,这一层就会输出没有被这个人选择的课程。
然后看最外层,not exists就是说不存在才输出元祖。不存在什么?不存在上一层中某人没有选的课,也就是某人把课选完了。这才输出这个人的学号。
如果这个人有课没有选,在中间那一层中就会有没有被选的课的信息,那么最外层的not检测到有值,就不输出当前所监测的元组(某个人)的信息。这是一次简单的理解,可能与拿着元组去检测的说法有所不同,但是意义一样。
仅留作自用,如有赐教感谢评论。
标准答案是图片这样
我们可能最内层它的意义就是某人所选修的全部课程
倒数第二层就是从课程表中选择最里层中(某人选修的所有课程中)所缺失的,如果这个人把所有的课选完了,那么这一层查找为空,反之只要没选完,这一层就会输出没有被这个人选择的课程。
然后看最外层,not exists就是说不存在才输出元祖。不存在什么?不存在上一层中某人没有选的课,也就是某人把课选完了。这才输出这个人的学号。
如果这个人有课没有选,在中间那一层中就会有没有被选的课的信息,那么最外层的not检测到有值,就不输出当前所监测的元组(某个人)的信息。这是一次简单的理解,可能与拿着元组去检测的说法有所不同,但是意义一样。
仅留作自用,如有赐教感谢评论。
解决方案 »
- Consolas字体有人用过么
- 文本框根据combo1的当前内容,显示对应信息
- 探讨VB的随机函数。
- 是不是数据库查询功能需要在建立数据库的mdb文件中也建个查询表才能实现
- 各位老大:怎样在DATAGRID的一个格中放进一个检查框?
- 请问用vb怎么返回一个文件夹,即象showopen一样但是返回的不是一个文件而是一个文件夹!
- 如何判断一个窗体是否已经打开?请指教,谢谢!
- 怎么更改程序图标
- 同志们,哪儿有免费的winfax空件可下?
- 一个access2000数据库,一个sql7.0数据库。。怎样在vb中将access2000数据库的数据insert into 到sql7.0数据库。不要用ado循环记录,直接用sql语句,给个例程。
- VB数组长度能修改吗?数组内容不变。
- 请教各位大佬,求到补码后如何符号位取反变成移码?
select s1.sno from student s1 cross join course c1
where s1.sno+c1.cno not in
(select sc.sno+sc.cno from sc))select sname from student where student.sno not in
(select distinct sc1.sno from
(select * from student s1 cross join course c1) sc1
left outer join sc on sc1.sno = sc.sno and sc1.cno = sc.cno
where sc.sno is null)如果不考虑效率的话,上面两种方法应该能够满足你的要求。
都是先找出没有选修全部课程的学生的sno,然后用not in排除掉,得到选修所有课程的学生