CakePHP3で、以下のPostgreSQLをコントローラー側からクエリビルダーを使ってfindしようとしていますが、
複雑な結合文すぎて、やり方がわかりません。
わかる方がいらっしゃれば、ご指摘よろしくお願いします。
テーブル一覧
Shohin
Meisho
Zaiko
Tokuisaki
###findで実現したいSQL文
SELECT U.品番,U.商品名,U.色コード,U.得意先名
FROM(
SELECT S.品番,S.商品名,Z.商品コード,M.色番,M.色コード,T.得意先名 FROM Shohin AS S, Zaiko AS Z, Tokuisaki AS T, Meisho AS M WHERE Z.在庫コード = S.品番 AND
AND Z.色コード = M.色コード AND Z.店舗コード = T.店舗コード AND Z.在庫フラグ = 1 AND (Z.値段 - S.値段) != 0
UNION
SELECT S.品番,Z.商品コード,M.色番,T.得意先コード FROM Shohin AS S,
Zaiko AS Z, Tokuisaki AS T, Meisho AS M WHERE Z.在庫コード = S.品番 AND
AND Z.色コード = M.色コード AND Z.店舗コード = T.店舗コード AND Z.在庫フラグ = 0 AND Z.値段 >= 10000) AS U WHERE
U.商品コード > 21000;
###前提
それぞれのテーブルに必要となる
Table,Entityファイルは全て個別に用意しています。
コントローラーでは
use Cake\ORM\TableRegistry;
$articles = TableRegistry::get('Zaiko');
$query = $articles->find();
という形で、findしようとしています。
あなたの回答
tips
プレビュー