目次
環境
Codeigniter : 3.1.8
はじめに
前回、CodeingterでUnionを使う記事を書きました。
今回は、Codeigniterでもサブクエリを使ったJOINが使えるよっていうのを書きます。
もっとも内容はUNIONの時とそんなに変わりませんが・・・
サブクエリにはQuery Builderを使う!
ここに書いてあります(ステマ
サブクエリを使ったJOINを書く
まず厄介なことに、Query Builderのjoin()を使うと、サブクエリがエスケープされてしまいます。
※ 正常な動作です。
そもそもサブクエリを生成するときにエスケープを行っているので、もう一度エスケープを行う必要はありません。
そこで、join()のエスケープを止めます。
止め方は、ドキュメントを参照
第4引数でエスケープの有無を設定できるので、ここにFALSEを指定してやります。
あとはもう終わったようなものです。
// 読み込み
$subquery_init = $this->load->database('', TRUE);
//サブクエリ
$subQuery = $subquery_init->select('no', FALSE)->from('tableA')->get_compiled_select();
// 初期化
$subquery_init->reset_query();
// JOINを設定
// 第4引数にFALSEを設定
$this->db->join("($subQuery) AS subT", 'mainT.no = subT.no', 'left', FALSE);
いかがでしょうか?
今日はこの辺でー