読者です 読者をやめる 読者になる 読者になる

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',
     ),
));

とする。