BETA

2.10以前でHAVING句をむりやり使う方法【CakePHP2】

投稿日:2020-03-27
最終更新:2020-03-27

HAVING句の使い方

HAVING句は「GROUP BY」したものを抽出したい時に使う。
WHEREとの違いは、呼び出すタイミング。

コマンドの実行順序は、

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

つまり、whereではグルーピングしたものを扱えない。

CakePHP2.10以前で使うには

バージョン 2.10.0 で追加: having と lock オプションが追加されました。 - データを取得する - 2.x

にあるように、
CakePHPでは2.10以前ではhavingを使うことができない(泣ける)
そのため、組み込むためには group にむりやり入れるしかない。

$options = [  
    'conditions' => [],  
    'fields' => 'name , count(Model.name) as cnt',  
    'group' => 'Model.name HAVING count(Model.name) >= 10',  
];  
$data = $this->Model->find('all' , $options );  

ちゃんとhavingを利用したい場合はぜひ2.10以降を使いましょう!

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

web中心のメモ置き場。プログラミングからデザインまで。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう