回 帖 发 新 帖 刷新版面

主题:[讨论]SQL专题讨论

最近在做一个学生成绩管理系统,还是那四张表:
class(clno C(8),clname C(14),number N(2),monitor C(10)) 
这是班级表,分别有班号,班名,班级人数,班长学号字段;
student(sno C(10),sname C(12),ssex C(2),sage N(2),clno C(8))
这是学生表,分别有学号,姓名,性别,年龄,班号等字段;
course(cno C(2),cname C(24),precno C(2)) 
这是课程表,分别有课号,课名,先修课课号等字段;
grade(sno C(10),cno C(2),gmark N(5,1))
 这是学生选课及成绩表,分别有学号,课号,成绩等字段。

要求写SQL查询语句,求出只选修了学生李勇所选全部课程的学生的学号及姓名,这个问题特复杂,我想了两周都没想出答案,后来经本坛多位高手指点,得狐说八道大力帮助,好容易把狐道的程序运行了,但没有结果(应该有),最后,还是自己在SQL server 2000的查询分析器中折腾了好几天,才折腾出如下句子,解决了问题,但在VFP中却没法运行,提示:"SQL:不能执行子查询",不知是何因?


select sno,sname from student s where not exists
     (select cno from grade c where sno=(select sno from student where sname='李勇') and not exists
            (select * from grade where sno = s.sno and cno=c.cno))
   and (select count(*) from grade where sno = s.sno)=(select count(*) from grade where sno=(select sno from student where sname = '李勇'))

请高手指点迷津!

(本人愚笨,请给出具体的句子并做适当的解释)

回复列表 (共9个回复)

沙发

嘿,刚才我还看到有以老装娕,男扮女装等词句,转眼就不见了,看来楼主的法律意识还是很强的,网络名是可以虚拟的,但IP地址是实实在在的,就现在的网上查询就可以通过IP地址查到公司的名字,隐私权现在法院受理的范围已经是一个不愿公开的电话号码被在公共场合中公开了的个案。

板凳

用SQL Server 2000的数据库,可以转换为存储过程试

存储过程为:
CREATE Procedure Sele_prg
@myname char(8)
as
select sno,sname from student s where not exists
     (select cno from grade c where sno=(select sno from student where sname=@myname) and not exists
            (select * from grade where sno = s.sno and cno=c.cno))
   and (select count(*) from grade where sno = s.sno)=(select count(*) from grade where sno=(select sno from student where sname =@myname))
go 

在vfp端
mylan=sqlexec(mycnt,'exec Sele_prg ?myname','mydbf')

3 楼

[quote]嘿,刚才我还看到有以老装娕,男扮女装等词句,转眼就不见了,看来楼主的法律意识还是很强的,网络名是可以虚拟的,但IP地址是实实在在的,就现在的网上查询就可以通过IP地址查到公司的名字,隐私权现在法院受理的范围已经是一个不愿公开的电话号码被在公共场合中公开了的个案。
[/quote]
吴大哥,本人初来本坛,对本坛中有些什么的做法实在看不过眼,想说两句,转念想算了,人各有志,既是论坛,大家都可以随便表现,无非是消遣而矣,虽有点为坛子里的老前辈鸣不平的冲动,但毕竟咱来这里以学习为主,也就不想惹烦恼了,所以改了,得罪人越少越好,毕竟现在昌导和谐社会。
这与法律意识无关,再说法律也解决不了所有问题,我们言归正传吧!

4 楼

回樵夫大叔:我想把SQL查询分析器中可以运行的那个句子搬到VFP的程序里去运行,但VFP不支持,我想看那位大哥是否知道问题出在哪里,该怎样修正?

5 楼

嘿嘿,在本论坛我学艺不精,杂耍本事不浅,专职泼水喜好,本论坛还有另一泼水高手,将版付(CBL)泼出坛外,你知道是谁吗,MOZ老兄是也!
     老高只能算是第二个泼出坛外的,这些倔老夫子,和网络还是有代沟啊,看来还要年青人给他们上上辅导课,熟悉一下地理环境,适应适应,到了哪个时候再来时,那就是真正的张无忌了,可以刀枪不入了!
     本坛的SQL高手非I LIKE FOX 莫属也!

6 楼

谢谢你提醒,刚才我去看了看MOZ的贴子,没有看到近期与CBL吵架的贴,以前的贴子倒是看到一些,虽然有些过,但还不算什么,看到泼走jinlonggao的那个kosung的什么可是个不得了的主儿,我也曾劝过她,现在看到它骂北京惬意的那些贴一点不亚于骂老高的,只是老高...,唉!不说了,我也怕挨骂。继续等待高手的出现,帮我解决问题。。。

7 楼

回afoxer:
我上面给出的两段程序,一段新建一个存储过程在Sql server 2000
一段在VFP中调用啊

不通我给你远程调试一下
我的QQ  561544836

8 楼

呀,鼎起。我可没有随便骂人,这也不是我的风格。

如果有得罪各位的地方请别介意,我从来是对事不对人。

9 楼

樵夫大哥,谢谢您了,我现在水平还不足以去搞VFP与SQL SERVER联合的事,我只想完完全全在VFP中实现我的那个查询.请多指导!

我来回复

您尚未登录,请登录后再回复。点此登录或注册