对thinkPHP中多表关联操作
一,注明:我进行的是三表的操作
1,商品表,用户表,和分类表
2,查询语句:
select a.*,u.name supplier_name from
(SELECT g.*,c.name cat_name FROM `sp_goods` g
join sp_category c on g.cat_id=c.id)
a join sp_users u on a.supplier_id=u.id where a.recycle=0
3,贴出我的控制器中的代码,包含了分类,理解即可
public function index() {
$condition = array();
$sql = 'select a.*,u.name supplier_name from
(SELECT g.*,c.name cat_name FROM `sp_goods` g join sp_category c on g.cat_id=c.id) a join sp_users u on a.supplier_id=u.id where a.recycle=1';
$page = intval($_GET['p']);
$page = max(1, $page);
$start = 10 * ($page - 1);
$limit = $start.', 10';
$total_num = M()->query($sql);
$total_num = count($total_num);
$url = U('Goods/index', array());
$pageStr = getPagestr($url, $total_num, 10, $page);
$this->assign('str', $pageStr);
$data = M()->query($sql.' limit '.$limit);
$this->assign("list", $data);
$this->display();
}
$data = M()->query($sql.' limit '.$limit);就是这里需要注意一下
4,查询结果:
二,总结
这里用到关联查询,可以想成每两个表两个表的关联,从上面的sql语句可以看到内部括号里面是一个查询,外面又是进行了一次两个 表的关联查询,把内部的查询结果想象成一个新表,虚表。

浙公网安备 33010602011771号