忘れないように記録しとこ

カバの樹

Codeigniterだってサブクエリを使ったJOINが使えちまうんだっ

2018年4月25日

環境

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()のエスケープを止めます。

止め方は、ドキュメントを参照

https://www.codeigniter.com/user_guide/database/query_builder.html?highlight=join#CI_DB_query_builder::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);

 

いかがでしょうか?

今日はこの辺でー

 

  • B!