2016-02-16 1 views
1

Я построил следующий запрос с построитель запросов Yii2:Объединение GROUP_CONCAT DISTINCT с COUNT в Yii2 Query

public function searchFilter() { 
    $query = (new Query()) 
     ->select([ 
      'GROUP_CONCAT(DISTINCT(a.merk), ".", m.merk ORDER BY a.merk ASC)    merk', 
      'GROUP_CONCAT(DISTINCT(b.brandstof) ORDER BY b.brandstof ASC)     brandstof', 
      'GROUP_CONCAT(DISTINCT(a.bouwjaar) ORDER BY a.bouwjaar DESC)     bouwjaar', 
      'GROUP_CONCAT(DISTINCT(k.kleur) ORDER BY k.kleur ASC)       kleur', 
      'GROUP_CONCAT(DISTINCT(t.transmissie) ORDER BY t.transmissie ASC)    transmissie', 
     ]) 
     ->from('auto_new a') 
     ->join('INNER JOIN', 'tbl_merken m', 'a.merk = m.merk_id')       //Merk 
     ->join('INNER JOIN', 'tbl_kleur k', 'a.kleur = k.kleur_id')       //Kleur 
     ->join('INNER JOIN', 'tbl_transmissie t', 'a.transmissie = t.transmissie_id')  //Transmissie 
     ->join('INNER JOIN', 'tbl_brandstof b', 'a.brandstof = b.brandstof_id');   //Brandstof 
    return $query; 
} 

Это дает мне следующий вывод:

image

Но теперь я хотите добавить счет после каждого значения в DISTINCT. Но я не знаю, как это сделать.

EDIT Это функция, которая выполняет запрос

public function actionSearchfilter($ac) { 
    Yii::$app->response->format = Response::FORMAT_JSON; 
    $query = Car::searchFilter()->where(['a.ac' => $ac, 'a.flag' => '1'])->all(); 
    return $query; 
} 
+1

показать мне образец в нормальном sql .. так что я могу оценить вас цель – scaisEdge

+0

вы могли бы еще код? –

ответ

0

Попробуйте это может быть?

->select([ 
    'GROUP_CONCAT(DISTINCT(a.merk), ".", m.merk ORDER BY a.merk ASC)    merk', 
    'GROUP_CONCAT(DISTINCT(b.brandstof) ORDER BY b.brandstof ASC)     brandstof', 
    'GROUP_CONCAT(DISTINCT(a.bouwjaar) ORDER BY a.bouwjaar DESC)     bouwjaar', 
    'GROUP_CONCAT(DISTINCT(k.kleur) ORDER BY k.kleur ASC)       kleur', 
    'GROUP_CONCAT(DISTINCT(t.transmissie) ORDER BY t.transmissie ASC)    transmissie', 
]) 
->from('auto_new a') 
->join('INNER JOIN', 'tbl_merken m', 'a.merk = m.merk_id')       //Merk 
->join('INNER JOIN', 'tbl_kleur k', 'a.kleur = k.kleur_id')       //Kleur 
->join('INNER JOIN', 'tbl_transmissie t', 'a.transmissie = t.transmissie_id')  //Transmissie 
->join('INNER JOIN', 'tbl_brandstof b', 'a.brandstof = b.brandstof_id');    //Brandstof 

->count(); 
return $query;