• ベストアンサー

Laravelクエリビルダでサブクエリ同士JOIN

Laravel11を使用しております。クエリビルダで、テーブルとサブクエリをJOINするにはjoinSub()やleftJoinSub()を使えばいいのですが、サブクエリとサブクエリをJOINするにはどうすればいいか分かりません。いろいろなドキュメントを見ていますが、どれもDB::table()から始まるものばかりで、テーブルとのJOINを想定したものばかりです。 サブクエリとサブクエリをJOINする方法をご存じの方、教えて下さるようお願いします。それとも、できないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

それなら↓ですかね。 https://www.larajapan.com/2021/08/03/from%E5%8F%A5%E3%81%AE%E3%82%B5%E3%83%96%E3%82%AF%E3%82%A8%E3%83%AA/ Joiningで繋げればって感じですかね。動く環境は手元に無いので、いけるだろうで回答してます。 https://qiita.com/yoshinyan/items/09ccddda3da05ed6fe5b

n-i-e
質問者

お礼

ありがとうございます!DB::query()->fromSub()ってできるんですね。 $sq1 = DB::table('test1') ->where('column1', '=', 100); $sq2 = DB::table('test2') ->where('column2', '=', 200); $query = DB::query() ->fromSub($sq1, 'sq1') ->joinSub($sq2, 'sq2', function($join) { $join->on('sq1.column3', '=', 'sq2.column3'); }) ->get(); こんな感じでやったらうまく行きました!どうもありがとうございます!

その他の回答 (1)

回答No.1

DB::rawやQuery Builderのメソッドで出来ると思います。 https://qiita.com/sato_ryu/items/1033fe51b886622a6dda githubからサンプルプログラムもダウンロード出来ますので、参考になると思います。 ※こちらでは、今はLaravel動く環境が手元に無いので、動作確認はしてません。

n-i-e
質問者

補足

ありがとうございます。見てみましたが、JOINの右側がサブクエリで、左側はテーブルですね。しかし私は、JOINの左側をサブクエリにしたいのです。あと、なるべくDB::raw()は使いたくない。。。

関連するQ&A