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 相关文章推荐
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
推荐一篇入门级的Class文章
Mar 19 PHP
php 获取可变函数参数的函数
Aug 26 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
codeigniter自带数据库类使用方法说明
Mar 25 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
destoon之一键登录设置
Jun 21 PHP
PHP实现获取FLV文件的时间
Feb 10 PHP
php使用gzip压缩传输js和css文件的方法
Jul 29 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
Oct 12 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 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
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
php提交post数组参数实例分析
2015/12/17 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
php实现图片压缩处理
2020/09/09 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
Python探索之创建二叉树
2017/10/25 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
python实现微信打飞机游戏
2020/03/24 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
超级实用的8个Python列表技巧
2020/08/24 Python
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
毕业生求职简历的自我评价
2013/10/07 职场文书
客服文员岗位职责
2013/11/29 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
早会主持词
2014/03/17 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
交通工程专业推荐信
2014/09/06 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
先进班集体事迹材料
2014/12/25 职场文书