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生成随机数或者字符串的代码
Sep 05 PHP
php下防止单引号,双引号在接受页面转义的设置方法
Sep 25 PHP
PHP STRING 陷阱原理说明
Jul 24 PHP
PHP curl使用实例
Jul 02 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
详解PHP PDO简单教程
May 28 PHP
laravel 5.3 单用户登录简单实现方法
Oct 14 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 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
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
深入解析PHP内存管理之谁动了我的内存
2013/06/20 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
php语法检查的方法总结
2019/01/21 PHP
<script defer> defer 是什么意思
2009/05/10 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
Python FTP操作类代码分享
2014/05/13 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
pytorch 常用线性函数详解
2020/01/15 Python
python中pivot()函数基础知识点
2021/01/03 Python
C语言变量的命名规则都有哪些
2013/12/27 面试题
外贸实习生自荐信范文
2013/11/24 职场文书
邮政员工辞职信
2014/01/16 职场文书
美发店5.1活动方案
2014/01/24 职场文书
房屋转让协议书范本
2014/04/11 职场文书
三年级评语大全
2014/04/23 职场文书
文秘应届生求职信
2014/07/05 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
活动宣传稿范文
2015/07/23 职场文书
感恩教育主题班会
2015/08/12 职场文书
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server