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',
),
));
とする。