$this->Comment->find('list',array(
fields' => array('DISTINCT user_id'),
'conditions' => $conditions,
));
こんな感じでやったら、以下のようなエラーが。
PDOEXCEPTION
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT `Comment. user_id` FROM `test`.`comments` AS `Comment` WHERE 1 = 1 ' at line 1
このサイトによると、DISTINCTってSELECTの直後に来ないといけないいたい。でもCakePHPのfind('list')ってデフォルトでは、SELECTの直後でIDを指定しているので、DISTINCTがその後になってしまうんですよね。
なので、group byを使うといいみたい。
$this->Comment->find('list',array(
fields' => array('user_id'),
'conditions' => $conditions,
'gruop' => 'user_id'
));
※Group Byの豆知識
デフォルトだとGROUP BYで指定されたカラムの昇順になる。いきなり順番変わってびっくりした。ORDER BY を使って任意のカラムの昇順、降順を指定できる。
0 件のコメント:
コメントを投稿