免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2936 | 回复: 3
打印 上一主题 下一主题

求助:关于Mysql子查询的问题!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-03 10:06 |只看该作者 |倒序浏览
我现在正在学MySql,使用的书是李立功与赵扬编著的《MySQL程序设计与数据库管理》。现在非常困惑的是MySQL不支持子查询这一功能。我想向您请教一个问题:如何在MySQL的查询中描述“全部”这一属性。

--------------------------------------------------------------------------------

       这里有一个具体的实例:SCS数据库中含有3个表:s(sno,sname,sage,
saddr),c(cno,cname,cteacher),sc(sno,cno,scgrade).其中各表的描述如下:s-学生,sno-学生编号,sname-学生姓名,sage-学生年龄,saddr-学生住址;c-课程,cno-课程编号,cname-课程名称,cteacher-教课的老师;sc-学生选课,sno-学生编号,cno-课程 编号,scgrade-该门课程的成绩。

--------------------------------------------------------------------------------

        我想做这样的查询:1.学习了某老师讲授的全部课程的学生学号;2.未完全学习某老师讲授的全部课程的学生学号。就是说:假如一个叫“李明”的老师讲授了1,2,3,4共4门课程,有一些学生全部学习了这4门课程,而有一些学生只学习了其中的n门课程(n〈4)。我现在想要分别查询这两部分学生的学号。

--------------------------------------------------------------------------------
          如果利用子查询,我的解决方法如下(在MS ACCESS中已运行通过):
            1,select distinct sno
                  from sc sc1
                  where not exists(
                             select  *
                             from c
                             where cteacher=" 李明” and not exists
                                                       (select   *  
                                                        from sc sc2
                                                        where sc1.sno=sc2.sno and sc2.cno=c.cno));
             2,select distinct sno
                   from sc sc1
                   where cno=any(
                                         select cno
                                          from c
                                          where cteacher=“李明”)
                   and exists(select  *
                                      from c
                                      where  cteacher=“李明” and not exists(
                                                          select   *
                                                          from sc sc2
                                                          where sc1.sno=sc2.sno and sc2.cno=c.cno));
         如果不用子查询,那么上面两个查询将怎样做出呢?

论坛徽章:
0
2 [报告]
发表于 2003-05-05 18:08 |只看该作者

求助:关于Mysql子查询的问题!!!

please install mysql 4.1

论坛徽章:
0
3 [报告]
发表于 2003-05-08 13:10 |只看该作者

求助:关于Mysql子查询的问题!!!

使用左连接或则右连接,来代替子查询.
原帖由 "lvcha" 发表:
我现在正在学MySql,使用的书是李立功与赵扬编著的《MySQL程序设计与数据库管理》。现在非常困惑的是MySQL不支持子查询这一功能。我想向您请教一个问题:如何在MySQL的查询中描述“全部”这一属性。

----..........

论坛徽章:
0
4 [报告]
发表于 2003-05-09 09:56 |只看该作者

求助:关于Mysql子查询的问题!!!

select A.a,B.a,B.b,B.c from A,B where A.a=B.a
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP