サブクエリ
サブクエリとは、複数のクエリを組み合わせて、目的のデータを抽出することです。クエリのネストを作成し内側のクエリを評価し、その評価値を用いて外側のクエリを評価します。
SELECT 注文番号 FROM 注文票 WHERE 商品コード = ( SELECT 商品コード FROM 商品リスト WHERE 商品名 = 'ICE' );
ここでの内側クエリとは()で囲まれた部分です。まずはここが評価され、その結果を用いて外側クエリが評価されます。
fuelPHPのクエリ発行
ORMはhttp://fuelphp.jp/docs/1.9/packages/orm/crud.html#/subqueriesを参照。
<?php $sub_query = DB::select('商品コード') ->from('商品リスト') ->where('商品名', '=', 'ICE') ->compile(Database_Connection::instance()); $query = DB::select('注文番号') ->from('注文票') ->where('商品コード', '=', DB::expr($sub_query)); $query->execute();
サブクエリのSQL文字列がクオートやバッククオートで囲まれないようにするためには、DB::expr()を用います。