2016-08-24 48 views
4

User表結構。CakePHP 2.x在同一字段中查找具有DISTINCT和COUNT的查詢

+------+-------+ 
| id | data | 
+------+-------+ 
| 1 | a | 
+------+-------+ 
| 1 | b | 
+------+-------+ 
| 2 | c | 
+------+-------+ 

預期結果。

+------+-------+ 
| id | count | 
+------+-------+ 
| 1 | 2 | 
+------+-------+ 
| 2 | 1 | 
+------+-------+ 

我在很多方面嘗試過DISTINCT和COUNT,但仍然沒有得到想要的結果。

我試圖

$this->User->find('all',array(
'conditions'=> array(), 
'fields' => array(
'DISTINCT(User.id)', 
'COUNT(DISTINCT User.id) as count' 
) 
) 
); 

回答

3

by子句

$this->User->find('all', 
    array(
     'fields' => array(
      'User.id', 
      'COUNT(User.id) as count' 
     ), 
     'group' => 'User.id' 
    ) 
); 
+0

感謝一噸。唯一的問題是,它給另一個數組計數。我試圖將'count'改爲'User.count',但沒有運氣。 –

0

嘗試一組除了比爾的answer,得到countUser領域,你需要把它作爲一個virtualField

$this->User->virtualFields['count'] = 0; 

$this->User->find('all', [ 
    'fields' => array(
     'User.id', 
     'COUNT(User.id) as User__count' 
    ), 
    'group' => 'User.id' 
]); 

這將是你r例子的結果:

########## DEBUG ########## 
array(
    (int) 0 => array(
     'User' => array(
      'id' => '1', 
      'count' => '2' 
     ) 
    ), 
    (int) 1 => array(
     'User' => array(
      'id' => '2', 
      'count' => '1' 
     ) 
    ) 
) 
########################### 
相關問題