mysql tp5关联查询DB,一对多
未知
2020-01-19 08:52:40
0
问题描述:
     一个admin表,字段id,zhandian_id;一个用户积分表,字段user_id;一个商品表,字段site_id。他们的关系是:site_id=zhandian_id,id=user_id。需求是查询各个站点的所有员工在时间段内的成交总额和所产生的积分、站点的所有员工的剩余积分

解决办法:
方法一:


         $list=Db::name("admin")->alias('ad')

        ->where('ad.is_work',1)

         ->where('ad.zhandian_id','not null')

        ->group('ad.zhandian_id')

        ->field('ad.zhandian_id,sum(ad.integral) as shengyujifen,
                (
            select sum(order_price)
            from gczywxcx_order
            where site_id = ad.zhandian_id
                and `order_state` = 2
                AND `is_type` = 3
                AND `confirm_date` BETWEEN '.strtotime($k3.'00:00:00').'  AND '.strtotime($k4.'23:59:59').'
        ) as sumPrice,(
            select sum(fee)
            from gczyadmin_integlog
            where user_id in (select id from gczyc_admin where zhandian_id = ad.zhandian_id)
                AND `type` = 1
                AND `add_date` BETWEEN '.strtotime($k3.'00:00:00').' 
                  AND '.strtotime($k4.'23:59:59').'
        ) as chanfen)
               ->order('sumPrice','desc')
               ->select();

方法二:
             $list=Db::name('admin_integlog')->alias('inte')
        ->join('admin ad','ad.id=inte.user_id')
        ->group('ad.zhandian_id')
        ->field('ad.zhandian_id,

            sum(if(type=1 and inte.add_date BETWEEN '.strtotime($k3.'00:00:00').' AND '.strtotime($k4.'24:00:00').' , inte.fee,0)) as chanfen,

            (SELECT sum( order_price ) FROM gczyc_wxcx_order WHERE site_id = ad.zhandian_id AND `order_state` = 2 AND `is_type` = 3    AND `confirm_date` BETWEEN '.strtotime($k3.'00:00:00').' AND '.strtotime($k4.'24:00:00').') as sumPrice ,

            sum(inte.fee) as leijifen,           

            sum(if(type=0, inte.fee,0)) as leijiyongfen,           

            sum(if(type=1, inte.fee,0)) as leijichan,

            sum(if(type=2, inte.fee,0)) as leijiyi,

            sum(if(type=3, inte.fee,0)) as cancelorder

            ,(select description from gczyc_jiayouzhan jia where id=ad.zhandian_id ) as description'

        )

        ->select();

相关内容

《哪吒2》中国影史第一个8...
《哪吒2》中国影史首个80亿大作,以卓越艺术与技术成就铸就辉煌,再...
2025-02-10 07:00:43
小米汽车:经查完全不存在网...
小米汽车回应SU7“断轴”传闻,经查完全不存在。官方迅速澄清,强调...
2025-02-10 06:23:39
MySQL触发器最佳实践与...
摘要: 本文介绍了MySQL触发器的最佳实践和案例分析,包括明确...
2025-02-09 12:46:40
MySQL触发器实例:订单...
MySQL触发器实例:通过订单处理,展示如何利用触发器自动更新库存...
2025-02-09 12:00:46
MySQL索引的最佳实践策...
MySQL索引最佳实践:明确需求,合理设计索引类型,避免过度索引,...
2025-02-09 11:23:43
优化MySQL查询性能的关...
摘要: 本文介绍了MySQL中索引的概念、作用及创建、使用和优化...
2025-02-09 11:00:40

热门资讯

mysql 多个站点的近30天... SELECT j.title, ( SELECT sum( realoil_price ) FROM...
mysql Please DI... mysql插入数据表时总是提示 Please DISCARD the tablespace befo...
sql 批量修改表前缀 示例:将dede_前缀修改成xiong_前缀 先查询以 dede_ 前缀的表: 需要修改的部分:re...
phpstudy在linux上... 开始配置 在线安装phpstudy一键包: 1.在Xshell里面输入wget -c http://...
tp5中MySQL如何获取JS... 第一种: // 假设$user是从数据库中查询出的用户信息 $user = Db::name(use...
mysql把表中数据插入到其他... 两张字段相同的表,一张作为产品库,一张作为自定义库,每增一个新客户就把产品库中的所有数据插入到...
mysql 一次查询,返回多个... 问题描述: 在一个表中有多个条件,其中两个条件是共同的,另外两个条件是不同,一条sql语句返回多个统...
navicate测试登录Acc... 安全组3306已经放行。宝塔【安全】中也放行3306。使用账号密码在navicate上登录数据库,出...
sql注入方法及防御危害 SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服...
使用Linux安装phpstu... 问题描述: 买了阿里云,配置好PHPstudy后好久没用,后来登录mysql,忘记密码,所以登录不上...