Home > Article > Backend Development > thinkPHP simple method to implement multiple subquery statements
This article mainly introduces the method of thinkPHP to simply implement multiple subquery statements, and compares and analyzes the specific implementation techniques of subquery statements in thinkPHP in the form of examples. Friends in need can refer to the following examples.
Learn how thinkPHP simply implements multiple subquery statements. Share it with everyone for your reference, the details are as follows:
SQL statements are broad and profound
If you understand sql statements well, you can make good use of database operations in frameworks such as thinkphp
Original 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;
There are two subquery statements. In fact, the subquery statements are also tables, but they are just stored in memory.
thinkphp implementation:
$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);
In fact, the thinkphp framework’s encapsulation of sql must eventually be pieced together into sql statements.
Related recommendations:
thinkPHP5.0 framework namespace detailed explanation
##
The above is the detailed content of thinkPHP simple method to implement multiple subquery statements. For more information, please follow other related articles on the PHP Chinese website!