thinkPHP简单实现多个子查询语句的方法


Posted in PHP onDecember 05, 2016

本文实例讲述了thinkPHP简单实现多个子查询语句的方法。分享给大家供大家参考,具体如下:

sql语句博大精深

理解好sql语句,就能用好thinkphp等框架中的数据库操作

原sql:

SELECT a.*,b.* from (SELECT a.id as opener_id,a.name,sum(c.money) as bonus_money,c.year,c.month from sh_opener a
LEFT JOIN sh_opener_bonus b on a.id = b.opener_id
LEFT JOIN sh_incentive c on b.incentive_id = c.id
where a.agent_id = 3 and a.status = 1 and c.year = 2015 and c.month = 11
GROUP BY a.id,c.year,c.month) a
LEFT JOIN (SELECT a.id as payment_id,a.opener_id,a.money as payment_money,a.trode_number from sh_opener_bonus_payment a
where a.year = 2015 and a.`month` = 11 and a.agent_id = 3) b
on a.opener_id = b.opener_id;

这里面有两个子查询语句,其实子查询语句也是表,只不过是存在内存中罢了。

thinkphp实现:

$useYear = date('Y',strtotime('last month'));
$this->assign('useYear',$useYear);
$useMonth = date('m',strtotime('last month'));
$this->assign('useMonth',$useMonth);
// 获取上一月人员的奖金金额
// 子查询1
$whereSub1['a.agent_id'] = $this->agent_id;
$whereSub1['a.status'] = 1;
$whereSub1['c.year'] = $useYear;
$whereSub1['c.month'] = $useMonth;
$subQuery1 = M()->table('sh_opener a')->join('sh_opener_bonus b on a.id = b.opener_id')->join('sh_incentive c on b.incentive_id = c.id')->where($whereSub1)->group('a.id,c.year,c.month')->field('a.id,a.name,sum(c.money) as bonus_money,c.year,c.month')->select(false);
// 子查询2
$whereSub2['a.agent_id'] = $this->agent_id;
$whereSub2['a.year'] = $useYear;
$whereSub2['a.month'] = $useMonth;
$subQuery2 = M()->table('sh_opener_bonus_payment a')->where($whereSub2)->field('a.id as payment_id,a.opener_id,a.money as payment_money,a.trode_number')->select(false);
$list = M()->table($subQuery1.' a')->join($subQuery2.' b on a.id = b.opener_id')->select();
$this->assign('list',$list);

其实thinkphp框架对sql的封装,最终还是要拼凑成sql语句。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP调用三种数据库的方法(3)
Oct 09 PHP
php中存储用户ID和密码到mysql数据库的方法
Feb 06 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
php检测网页是否被百度收录的函数代码
Oct 09 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
Jan 17 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
Sep 28 PHP
PHP匿名函数和use子句用法实例
Mar 16 PHP
老生常谈文本文件和二进制文件的区别
Feb 27 PHP
PHP设计模式之抽象工厂模式实例分析
Mar 25 PHP
php查询内存信息操作示例
May 09 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 PHP
thinkPHP自动验证机制详解
Dec 05 #PHP
thinkPHP中_initialize方法实例分析
Dec 05 #PHP
php版微信自定义回复功能示例
Dec 05 #PHP
thinkPHP中配置的读取与C方法详解
Dec 05 #PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 #PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 #PHP
thinkPHP中验证码的简单实现方法
Dec 05 #PHP
You might like
Terran剧情介绍
2020/03/14 星际争霸
文件上传类
2006/10/09 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
简单的php购物车代码
2020/06/05 PHP
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
Django中使用Celery的方法示例
2018/11/29 Python
Python列表切片操作实例总结
2019/02/19 Python
flask应用部署到服务器的方法
2019/07/12 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
优秀经理事迹材料
2014/02/01 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
社会实践活动总结范文
2014/07/03 职场文书
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers