3个数据表操作研究
程序员文章站
2024-01-24 14:34:58
首先,新建数据表aaa、bbb以及他们相关联的数据表avb;字段名如下图 填充点数据,如下: 上面设计表的时候,故意在两个表中有相同字段con,如果不做处理的话,在php程序中,看看什么情况?得到的结果集中的con是aaa表的,还是avb表的? 如果将aaa LEFT JOIN avb 改为 avb ......
首先,新建数据表aaa、bbb以及他们相关联的数据表avb;字段名如下图
填充点数据,如下:
上面设计表的时候,故意在两个表中有相同字段con,如果不做处理的话,在php程序中,看看什么情况?得到的结果集中的con是aaa表的,还是avb表的?
1 $sql = "select * from aaa left join avb on aaa.a_id = avb.a_id"; 2 $db->query($sql); 3 $result_list = $db->get_all(); 4 echo '<pre>'; 5 print_r($result_list);
如果将aaa left join avb 改为 avb right join aaa呢?
答曰:1.理论上结果集是一样的 2.但是php中对相同项的内容,取的是后表中的。
总结一下:
a left join b , a的记录全保留,b往a填内容,相同字段记录留b的(left join左为主,相同字段留后表的)
a right join b, b的记录全保留,a往b填内容,相同字段记录留b的(right join右为主,相同字段留后表的)
第2大问题,3个表如何连接查询?取出对应的数据?
答曰:上面左连接、右连接搞明白得到的结果集后,三个表就是2个表连接后的结果集再和第三个表连接。写法上如下
select * from aaa inner join avb on aaa.a_id = avb.a_id inner join bbb on avb.b_id = bbb.b_id
上面的语句用where子句也可以
select * from aaa, bbb, avb where aaa.a_id = avb.a_id and bbb.b_id = avb.b_id
再看一遍
如果是在php中得到的结果集是: