多表联查就是要查询的结果是需要获取多个表的内容,把它们的关系建立为一个临时存在的表;
多表联合查询是不可以进行索引优化查询速度的,所以一般情况下不建议使用;
多表联查使用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
$myrele