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 相关文章推荐
将RTF格式的文件转成HTML并在网页中显示的代码
Oct 09 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
php获得url参数中具有&的值的方法
Mar 05 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 PHP
php模仿asp Application对象在线人数统计实现方法
Jan 04 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
PHP curl使用实例
Jul 02 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
Laravel框架下的Contracts契约详解
Mar 17 PHP
php微信小程序解包过程实例详解
Mar 31 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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
PHP图片上传代码
2013/11/04 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
innerText 使用示例
2014/01/23 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
python如何把字符串类型list转换成list
2020/02/18 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
应届生服装设计自我评价
2013/09/20 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
公立医院改革实施方案
2014/03/14 职场文书
公司投资建议书
2014/05/16 职场文书
专项法律服务方案
2014/06/11 职场文书
个人工作总结范文2014
2014/11/07 职场文书
2014年项目工作总结
2014/11/24 职场文书
保研推荐信范文
2015/03/25 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技