mysql多表联合查询

我在工作中天天研究zen cart的程序,那个叫人痛苦,最近比较痛苦的是经常碰见mysql多表联合查询,多的时候有12个表联合查询,zen cart的程序员不知道是懒还是技术好,一个语句完成啦20几个功能模块需要的数据,我修改就痛苦的很~~~!!!我只会select * from table where id=1,2,3,。。。。。。。。。。
       后台来在网上找啦一堆,看懂啦个大概,很多没有注意教PHP操作输出的数组集首先我们要了解三个用于联合查询的语法:
left   join (左链)     right   join(右链)     inner jion(内联);

我们开始讲解列子的时候,先要三个表:

表t1是会员的名字,级别ID
id     name     lvid(级别ID)
1         张         2
2         王         3
3         李         1
4         小         5

表t2是会员的级别ID的值(比如1是幼儿园 2是小学生 3是中学生)
lv_id       lv(会员级别值)
1         幼儿园
2         小学生
3         中学生
4         高中生

表t3是会员发帖的表,有帖子ID,帖子标题,会员ID,帖子属性(禁止阅读 和 允许阅读)
art_id         art_name(帖子标题)       h_id (会员ID)         art_pr(帖子属性)
1                               你                 1                               0
2                               我                 3                               1
3                               他                 1                             0
4                               大家                 3                           1


三个表都建好啦,我们先看表t1 和 t2 来讲解left join 和 right jion
left join 左连查询 语法是

<?php 
$query="SELECT   t1.id,    t1.name,   t2.lv    FROM   t1   LEFT JOIN   t2   ON   t1.lvid=t2.lv_id" ;
while($row=mysql_fetch_array($query)){ print_r($row);
?>

 查询结果如下:

id         name           lv

1              张     小学生

2              王     中学生

3              李     幼儿园

4              小     null

可以看出左连查询就是按照左边t1的条件查询,保留t1所有数据,右边表t1没有符合左边表t2的数据为空

RIGHT JOIN刚好相反

扫描二维码关注公众号,回复: 1366579 查看本文章
<?php
$query ="SELECT   t1.id,    t1.name, t2.lv    FROM   t1   RIGHT JOIN   t2   ON   t1.lvid=t2.lv_id" 
while($row=mysql_fetch_array($query)){ print_r($row); 
?>

 查询结果如下:

id         name           lv

3             李      幼儿园

1             张      小学生

2            王      中学生

NULL   NULL     高中生

可以看出左连查询就是按照左边t1的条件查询,保留t2所有数据,t1没有符合的数据为空

猜你喜欢

转载自igaozh.iteye.com/blog/1598824