mysql关联查询php,MYSQL关联查询(PHP)

今天在写了一个数据库查询的函数,不过被老大轻喷了。的确之前的查询方式不好,在此整理贴下。

有时候我们需要对两张表或多张表进行关联查询。如下图:

e8354899bfb71bcd277bc4241f257353.png

方法一:对人员表中的每一项,都去查询部门表。我之前使用的方法...每次都要查询,浪费时间,不推荐。

7e21a5f8eb4bb841d4585c6e2f7cdd3d.png

方法一对应代码(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 查询。之后使用的方法..只用查询一次数据库。

d90df943cd9b273efe71f36d8ce278dc.png

方法二对应代码(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];

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值