CakePHPのfindで複数のカラムのDISTINCT
CakePHPのfindメソッドで複数のカラムのDISTINCTを実行したいなと思いcookbookを確認したのですが、
サンプルには1カラムのものしかない。
DISTINCT クエリを用いた簡単な例は次のようになります。MIN() や MAX()、その他の演算子も、同じように扱えます。
array('fields'=>array('DISTINCT (User.name) AS my_column_name'), 'order'=>array('User.id DESC'))
これに倣ってそのまま2カラムでやってみたものの、SQL文のエラーになって困った。
で、結果、findAllを使えば良さそうという所にたどり着いた。
findAllById($id, 'DISTINCT column1, column2');
こうすると、where id = $idのDISTINCTが実行できる。
もしくはgroup byで似たような結果を出したければ
find('all', array( 'conditions' => array( 'id' => $id, ), 'fields' => array( 'column1', 'column2', ), 'group' => array( 'column1', 'column2', ), ));
とする。