目次
環境
Codeigniter : 3.1.8
はじめに
前回、CodeingterでUnionを使う記事を書きました。
https://www.kabanoki.net/1934
今回は、Codeigniterでもサブクエリを使ったJOINが使えるよっていうのを書きます。
もっとも内容はUNIONの時とそんなに変わりませんが・・・
サブクエリにはQuery Builderを使う!
ここに書いてあります(ステマ
https://www.kabanoki.net/1932
サブクエリを使った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);
いかがでしょうか?
今日はこの辺でー