Heim > Artikel > Backend-Entwicklung > thinkPHP einfache Methode zum Implementieren mehrerer Unterabfrageanweisungen
Dieser Artikel stellt hauptsächlich die Methode von thinkPHP vor, um mehrere Unterabfrageanweisungen einfach zu implementieren, und vergleicht und analysiert die spezifischen Implementierungstechniken von Unterabfrageanweisungen in thinkPHP in Form von Beispielen. Freunde in Not können sich auf die Beispiele in diesem Artikel beziehen
Erfahren Sie, wie thinkPHP einfach mehrere Unterabfrageanweisungen implementiert. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
SQL-Anweisungen sind umfassend und tiefgreifend
SQL-Anweisungen gut verstehen, und Sie können Datenbankoperationen in Frameworks wie z. B. gut nutzen 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;
Es gibt zwei Unterabfrageanweisungen auch Tabellen, aber sie werden nur im Speicher gespeichert.
Thinkphp-Implementierung:
$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);
Tatsächlich muss die Kapselung von SQL durch das Thinkphp-Framework noch gestückelt werden zusammen in SQL-Anweisungen.
Verwandte Empfehlungen:
Detaillierte Erläuterung des thinkPHP5.0-Framework-Namespace
Das obige ist der detaillierte Inhalt vonthinkPHP einfache Methode zum Implementieren mehrerer Unterabfrageanweisungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!