作协:请教一句sql语句。这个问题太难了!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 18:36:08
设有表

(学员基本资料表) xueyuan
(学号)sno(姓名)name(年龄)age
1 张三 20
2 李四 19
3 王五 21

(所有课程表)kecheng
(课程号)keno(课程名)kename
1 c++
2 delphi
3 php
4 pc技术
5 网络技术

(学员选课表)xyxuanke
(学号)sno(课程号)keno
1 2
1 3
2 1
3 1
3 2
3 3
3 5

如何用 sql 查讯出 同时 学习了
课程名为 delphi和php 的学员?

要求可在access里面执行。

SELECT DISTINCT a.sno,a.name, a.age
FROM xueyuan a, kecheng b, kecheng c, xyxuanke d, xyxuanke e
WHERE b.kename='delphi'
AND c.kename='php'
AND d.keno = b.keno
AND e.keno = c.keno
AND d.sno = e.sno
AND a.sno = d.sno

用(学员基本资料表) 与 (学员选课表) 以“学号”为关键字建立连接 再用(学员选课表)与 (所有课程表) 以 “课程号”为关键字建立连接 从而建立多重连接就OK了

select xueyuan.sno,xueyuan.name form xueyuan,kecheng,xyxuanke where xueyuan.sno=xyxuanke.sno and kecheng.keno=xyxuanke.keno and kecheng.kename="Delphi" and kecheng.kename="PHP"

做3个表连接而已!!```没有什么难度的
注意,使用的时候,""要改为''

同意cychappy
这种多表连接的语句用处非常多的,要打好基础!