基于ThinkPHP的mysql 连表查询时,子表多条件,怎么查询?
怪我咯
怪我咯 2017-04-11 10:10:19
[PHP讨论组]

我是这么写的,只得到了累计销售,我还想获得当月销售,同时输出这两个值。

public function agentManage(){

    $m = M("dagent as a");
     $count = $m->count();
     $Page       = new \Think\Page($count,10);
     $show       = $Page->show();// 分页显示输出
     $list = $m->order('id desc')               
             ->field("a.id,a.agent_id,a.recommend_id,a.is_cash,a.status,sum(qp_dagent_sell.sell_num) as all_num")
             ->join("LEFT JOIN qp_dagent_sell ON qp_dagent_sell.agent_id = a.agent_id")
             ->group('qp_dagent_sell.agent_id')
             ->limit($Page->firstRow.','.$Page->listRows)->select();
             // $beginThismonth=mktime(0,0,0,date('m'),1,date('Y'));
             // $list = M("dagent_sell")->
             // ->field(sum(sell_num))
             // ->where("time >='$beginThismonth'");

     $this->assign("list",$list);
     $this->assign('page',$show);// 赋值分页输出
     $this->display();
}
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(4)
怪我咯

复杂的sql语句就直接写sql查吧,一年前就没用tp了,应该有类似findBySql() 的方法,前端的话注意防注入,处理一下就行。不用把模型查询写的这么复杂。

伊谢尔伦

同意楼上的说法 有时当框架不能满足我们的需求时 就写原声sql语句 这个很正常

大家讲道理

左连的话,右边没值的话就是空,所有遍历输出的时候要判断是不是空,空的话输出0

大家讲道理

这种场景尽量避免使用 JOIN ,虽说一条 SQL 语句就行,减少了后端与数据库的连接耗时,但是对数据库压力会比较大。
需要通过计算得到的分析数据再次循环遍历去拿或者将关联字段拼接起来查询出整个计算数据的结果

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号