当前位置: 首页 > news >正文

淮安网站开发工程师招聘网天津设计公司有哪些

淮安网站开发工程师招聘网,天津设计公司有哪些,网页设计网站概述怎么写,天元建设集团有限公司商票兑付情况目录 一:背景 二:查询实例 三:总结 一:背景 我们在实际业务的开发过程中,经常会碰到这样的场景,查询某些部门的客户信息,查询下过订单的客户信息。这里查询客户信息实际上就用到了子查询&…

目录

一:背景

二:查询实例

三:总结


一:背景

我们在实际业务的开发过程中,经常会碰到这样的场景,查询某些部门的客户信息,查询下过订单的客户信息。这里查询客户信息实际上就用到了子查询,通常客户表会有一个字段表示归属员工。通过这个字段可以知道员工的id。同样的员工表会有部门信息,同时订单表也有客户信息。这样我们在客户信息要做到两步。第一步实际上是查询员工id或者客户id的集合,第二步再通过这些集合查询客户表获取客户信息。

二:查询实例

1:比如说我们查询某个部门的客户信息

      $customerList =  Db::name('customer')
            ->when($param['customer_type'] ?? false, function ($query) use ($param) {
                $query->where('user_id', 'in', function ($query) use ($param) {

                    return  $query->name('user')->where('structure_id','in',function($query) use             ($param)   {

                        return $query->name('structure')->when(true,function($query) use ($param) {
                            $query->where('id', '=', $param['dept_id']);
                         

                        })->field('id');

                    })->field('id');

                });

            })
              ->field('id,name,create_time')
             ->limit(100)
            ->select()
            ->toArray();

这里我们构造两个子查询,第一个子查询查询员工信息,第二个子查询查询部门信息,查询部门的时候我们传入部门id作为参数,这样我们这个sql就实现了查询部门id是特定值的客户的信息

这里传入的参数还可以和部门有关的名称或者等级等,这样我们只需要根据入参的不同修改子查询

  return $query->name('structure')->when(true,function($query) use ($param) {
                            $query->where('id', '=', $param['dept_id']);

                        })->field('id');

比如说查询名称:

  return $query->name('structure')->when(true,function($query) use ($param) {
                            $query->where('name', 'like',     '%-'.$param['dept_name']. '-%');

                        })->field('id');

这样也方便我们后期的搜索。

我们还可以根据多个条件查询:

return $query->name('structure')->when(true,function($query) use ($param) {
                            $query->where('id', '=', $param['dept_id']);
                          $query->whereOr('level', 'like', '%-'.$param['dept_level']. '-%');

                        })->field('id');

同时查询满足部门id和等级的条件搜索。

2:查询下过订单的客户信息

        $customerList =  Db::name('customer')
            ->when($param['customer_type'] ?? false, function ($query) use ($param) {
                $query->where('id', 'in', function ($query) use ($param) {

                    return  $query->name('order')->where('status','=',1)->field('uid');

                });

            })
             ->field('id,name,create_time')
             ->limit(100)
            ->select()
            ->toArray();

我们这里查询订单状态是1的客户id集合,再通过id集合获取客户信息。这样查询有个好处就是我们的sql语句会比较短,这样sql执行过程中也不会出现sql语句超过长度。试想下如果我们不使用子查询先根据条件查询到下过订单的客户id集合,然后再通过id集合通过where in的方式查询客户表,如果我们的下单客户数量巨大,那么这个sql语句是很长的。执行会出问题。

三:总结

以上就是thinkphp下子查询的使用,通过子查询,配合多个表的联查和关联搜索还是很方便的。

http://www.yayakq.cn/news/262306/

相关文章:

  • 给网站做广告自己做h5怎么做
  • 石家庄网站免费制作冻品网站的建设背景
  • 网站源码小千个人网推广普通话写好规范字手抄报
  • 韩国网站 后缀wordpress删除谷歌自提
  • 网站页尾版权视频直播app源码
  • 最优惠的郑州网站建设免费企业网站程序上传
  • 展示型网站一样做seo优化吗即墨公司做网站
  • 情头定制网站青岛公司网站建设开发
  • 专业建设公司网站1024cctvcom戊人影祝
  • 茶叶网站建设费用明细品牌关键词优化
  • 免费网站域名查询在深圳如何注册自己的公司
  • 网站建设维护专员网站怎么建设可以发图评论
  • 网站开发需要怎么做商业设计公司
  • python做网站好处怀柔营销型网站建设
  • 厦门手机网站企业内部网站模板
  • 系统开发费用seo搜索引擎招聘
  • 二手车 网站开发膳食管理东莞网站建设
  • 网络课程教学平台有哪些seo快速排名多少钱
  • seo网站优化建议邯郸研情网络科技有限公司
  • 网站建设客源胶州专业建站
  • 深圳网站域名注册wordpress倒闭汉化组
  • 如何做建筑一体化的网站wordpress只显示部分文章
  • 南京网站设计公司推荐邯郸哪里有做网站的李
  • 网站建设淘宝山东城市建设职业学院教务网站
  • 关于网站建设的通知张向东
  • 做电影网站需要多大空间网站建设相关制度
  • 建网站有什么要注意的丹阳高铁站对面的规划
  • 浏阳企业网站建设用php做网站的方法
  • 温州做网站哪个好代码网页制作
  • 如何建淘客网站爱原物设计网