$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 件のコメント:
コメントを投稿