Heim  >  Artikel  >  Backend-Entwicklung  >  thinkPHP einfache Methode zum Implementieren mehrerer Unterabfrageanweisungen

thinkPHP einfache Methode zum Implementieren mehrerer Unterabfrageanweisungen

不言
不言Original
2018-05-03 16:31:242731Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn