对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语句可以看到内部括号里面是一个查询,外面又是进行了一次两个 表的关联查询,把内部的查询结果想象成一个新表,虚表。

 

posted @ 2015-03-23 17:31  dsczs  阅读(467)  评论(0)    收藏  举报