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+MYSQL开发工具及资源收藏
Jan 02 PHP
PHP setTime 设置当前时间的代码
Aug 27 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 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
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
Javascript继承机制详解
2017/05/30 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
如何理解Python中包的引入
2020/05/29 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
想学画画?python满足你!
2020/12/24 Python
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
生产车间主任的个人自我鉴定
2013/10/25 职场文书
总经理岗位职责
2013/11/09 职场文书
职业规划书如何设计?
2014/01/09 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
任命书标准格式
2015/03/02 职场文书
房贷工资证明范本
2015/06/12 职场文书
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python