MYSQL关联查询(PHP)

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

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

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

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

 

转载于:https://my.oschina.net/mcstudio/blog/705907

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值