お世話になっております。
先ほどPHP - CakePHP 3でのDBクエリの発行がよく分からない(48240)|teratail
という質問で、SQLを直接書く方法をご教示頂きました。
これで一旦は解決なのですが、勉強のためにCakePHP3のクエリビルダで実装したいです。
問題のSQLを再度提示いたします。
SQL
1SELECT MIN(seq + 1) AS gap 2FROM SeqTbl 3WHERE (seq+ 1) NOT IN (SELECT seq FROM SeqTbl);
このようにNOT INの中にSELECT文がある場合は、どのように書くのでしょうか?
現在、分からないなりにこのように書いてみました。
PHP
1$query = $this->Table->find(); 2$notIn = $query->newExpr()->notIn('seq + 1', ['SELECT seq FROM SeqTbl']); 3$result = $query 4 ->select(['gap' => $query->func()->min('seq + 1')]) 5 ->where($notIn) 6 ->first();
もちろん、違うのはわかるのですが、どのようにすればいいか見当がつきません。
どのように書けばよろしいでしょうか?
ご回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/09/16 06:50