最新分享 » 心情生活 » 数据库多表查询的实现例子

数据库多表查询的实现例子

时间:2009-4-6 作者:天空下的雨 分类: 心情生活 评论:0 浏览:6149

有很多朋友问我多表查询的方法,今天,天空下的雨就给初学数据库的朋友讲一下数据库多表查询的简单实现。不说废话了,直接例子吧。

例子:
数据库有三个表
学生表:student   选课表:lesson   成绩表:score

学生表[student]
id    name   les       
1     小杨      1
2     小张      1
3     胡胡      3 
4     静静      2

选课表[lesson ]
id    LName
1     软件
2     经济
3     管理

成绩表[score]
id     stuID    lesID    num
1       1           1        97
2       4           1        90
3       1           2        80
4       2           1        95
5       3           1        88
6       2           3        97

上面就是三张表的数据。
这时候,我们就需要把这些表中的数据联合起来查询。比如说学生的选课信息,我们可以这样写:

1.  SELECT s.id,s.name,le.lName FROM student AS s,lesson AS le WHERE s.les=le.id

2.  SELECT s.id,s.name,le.lName FROM student as s INNER JOIN lesson as le ON s.les=le.id

查询结果:
id name lName
1 小杨 软件
2 小张 软件
3 胡胡 管理
4 静静 经济

两种方法是等效的,且匹配条件都为:学生表的les = 选课表的id ,结果才能正确显示。当我们连接两张数据表的时候,查询的方式是首先逐行扫描“学生表”中的信息,然后根据连接条件来决定此记录是否被检索,还有很多情况 自己可以试试,这里就不说了。AS 在SQL语句里是起一个别名的作用。

那么,我们要在同一页中显示三张表的的部分数据,我们又该如何连接呢? 看看下面的SQL语句吧

SELECT n.id,s.name,le.lName,n.num FROM (student AS s INNER JOIN score AS n ON s.id = n.stuID) INNER JOIN lesson AS le ON n.lesID = le.id

查询结果:
id   name   lName num
1   小杨       软件       97
2   静静       软件       90
3   小杨       经济        80
4   小张       软件       95
5   胡胡       软件       88
6   小张       管理       97

首先,根据上面两张表查询的方法。我们只要稍微修改下三张表之间的匹配条件即可。
两个匹配条件:学生表ID = 成绩表stuID , 选课表ID =  成绩表lesID 。

好了,就到这了。慢慢体会吧。 更多的方法请到网上搜索吧。
by 天空下的雨