|
沙发

楼主 |
发表于 2009-6-22 12:08:52
|
只看该作者
多表查询
很多时候,特别是规范的方法设计的数据库,在进行查询时,需要涉及到多表查询。
在执行多表操作时,必须通过 SQL 语句将两个表关联起来,进行关联查询。
下面,要同时查询两个表,一个是 pw_posts ,另外一个是 pw_administratros 。
现在先查看 pw_administrators 表里的内容:mysql> select * from pw_administrators;
+-----+-----------------+---------+--------+
| uid | username | groupid | groups |
+-----+-----------------+---------+--------+
| 1 | admin | 3 | |
| 2 | bibiyaki | 17 | |
| 8 | 我家的小鸟 | -1 | ,17, |
| 9 | natu | -1 | ,17, |
| 10 | beyes | 18 | |
| 11 | 秦荷朵朵 | 3 | |
| 5 | 星凌化心 | 16 | |
| 6 | 星鬼 | 16 | |
| 14 | 贰贰 | 16 | |
| 37 | 都没小脑袋 | 6 | |
| 48 | bibiyaki2 | -1 | ,17, |
| 147 | 泰光采德 | 6 | |
| 192 | 都没大脑袋 | 6 | |
| 234 | 分水娴 | 6 | |
| 238 | 香阳学 | 6 | |
| 268 | mikibobo | 16 | |
| 269 | sofeiya | 16 | |
| 275 | lid4ji | 18 | ,5, |
| 273 | l4nneret | 7 | |
+-----+-----------------+---------+--------+
现在我们查询 "秦荷朵朵“ 这个用户的 UID 是多少,并顺便看一下她的发帖时的 IP :mysql> select pw_posts.author, userip, pw_administrators.uid from pw_posts,pw_administrators where pw_posts.author='秦荷朵朵' and pw_administrators.username='秦荷朵朵';
+--------------+-----------------+-----+
| author | userip | uid |
+--------------+-----------------+-----+
| 秦荷朵朵 | 121.230.11.23 | 11 |
| 秦荷朵朵 | 121.230.11.23 | 11 |
| 秦荷朵朵 | 121.230.11.23 | 11 |
| 秦荷朵朵 | 121.230.11.156 | 11 |
| 秦荷朵朵 | 121.230.11.156 | 11 |
... ... ...
+--------------+-----------------+-----+
41 rows in set (0.00 sec) 由上面的查询可见,秦荷朵朵这个会员对应的 UID = 11 。
可以看到,在进行多表查询时,使用了 "表名.字段名" 的格式。这样做是为了防止 mysql 查询错误,因为很可能存在多个表的字段名称相同,所以必须要在字段前面添加表的名称加以区分。如果字段名称在表中是惟一的,则可以省略表名。 |
|