php的联查,PHP的多表联查

大家好!

多表联查就是要查询的结果是需要获取多个表的内容,把它们的关系建立为一个临时存在的表;

多表联合查询是不可以进行索引优化查询速度的,所以一般情况下不建议使用;

多表联查使用inner join,在这里inner是可以省略的,如下:

比如:

有两个表,一个是父表成绩表 score 字段有id,studentid,mark(分数)

一个为子表学生姓名表 student 字段有id,sname,

查询出成绩大于80的学生有哪些?

select sname from score as sc join student as st on sc.studentid=st.id

on sc.mark>80;

as 起别名调用; on相当于这个表下的字段; sc.studentid就是score表下的studentid;

在TP框架中:

例如:3个表 myrelease(发布) user(用户) image(图片)

查询文章发布表进而对user和image进行查询获取数据

$myrelease = M('myrelease')->field('user.*, myrelease.*')

// 将user表下ID与myrelease下的user_id进行匹配

->join('user on user.id = myrelease.user_id')

->where("myrelease.id=1")

//->where("myrelease.status=0 and myrelease.is_delete=0")

->order("myrelease.id desc")

->select();

foreach ($myrelease as $k => $v) {

// 获取每次循环的id

$myreleaseid = $myrelease[$k]['id'];

// 使用循环遍历把images表中的图片插入myrelease表中,images为2维数组

$myrelease[$k]['images'] = M('images')

->field('imageurl')

->where("my_id = '{$myreleaseid}'")

->select();

}

进而获取数据达到 多表联查