今天在写了一个数据库查询的函数,不过被老大轻喷了。的确之前的查询方式不好,在此整理贴下。
有时候我们需要对两张表或多张表进行关联查询。如下图:
方法一:对人员表中的每一项,都去查询部门表。我之前使用的方法...每次都要查询,浪费时间,不推荐。
方法一对应代码(PHP-THINKPHP):
$User = D('User');$list = $User->where(true)->select();$Depart= D('Department'); $num = 0; foreach($list as $one){ $id = $one['depart_id']; $result = $Depart->where("depart_id = $id")->find(); $list[$num]['depart_name'] = $result['depart_name']; num++; }dump($list);
方法二:把人员表中每一项的部门ID组成数组,统一用 IN 查询。之后使用的方法..只用查询一次数据库。
方法二对应代码(PHP-THINKPHP):
$User = D('User');$list = $User->where(true)->select();$Depart= D('Department'); $idlist = array(); foreach($list as $one){ $id = $one['depart_id']; $idlist[] = $id; } $map['depart_id'] = array('in',$idlist); $result = $Depart->where($map)->Field("depart_name")->select(); foreach($list as $k=>$v){ $list[$k]['depart_name'] = $result[$k]; }