2015-07-24 1 views
1

Я пытаюсь переписать ниже запрос в ЗендКак использовать COUNT и DISTINCT вместе в zend framework?

SELECT COUNT(DISTINCT CPS.supplier_id, CPS.manufacturerid,CPS.categories_id) 

      FROM suppliers_report AS CPS 

      INNER JOIN category_brand B ON B.categories_id = CPS.categories_id AND B.manufacturerid = CPS.manufacturerid 

      INNER JOIN manufacturer m ON m.manufacturerid = CPS.manufacturerid 

          WHERE s.isactive=1 AND CPS.flg = 2 AND CPS.categories_id = c.parent_id 

Я попытался выше запрос в Зенд, как

$this->select()  
     ->setIntegrityCheck(false) 
      ->from(array('CPS' => 'suppliers_report'), array('CPS.supplier_id', 'CPS.manufacturerid', 'CPS.categories_id')) 
      ->join(array('B' => 'category_brand'), 'B.categories_id=CPS.categories_id' AND 'B.manufacturerid = CPS.manufacturerid') 
      ->join(array('m' => 'manufacturer'), 'm.manufacturerid = CPS.manufacturerid') 
      ->where('s.isactive=1 AND CPS.flg = 2 AND CPS.categories_id = c.parent_id AND CPS.manufacturerid=ctb.manufacturerid'); 

я застрял на том, как включить count и DISTINCT в вышеприведенном случае .Please помочь

ответ

1

Вы должны будете использовать Zend_Db_Expr для функций, таких как COUNT(), попробовать что-то вроде следующего:

$this->select()  
     ->setIntegrityCheck(false) 
     ->from(array('CPS' => 'suppliers_report'), array(new Zend_Db_Expr('COUNT(DISTINCT CPS.supplier_id, CPS.manufacturerid,CPS.categories_id)'))) 
     ->join(array('B' => 'category_brand'), 'B.categories_id=CPS.categories_id' AND 'B.manufacturerid = CPS.manufacturerid') 
     ->join(array('m' => 'manufacturer'), 'm.manufacturerid = CPS.manufacturerid') 
     ->where('s.isactive=1 AND CPS.flg = 2 AND CPS.categories_id = c.parent_id AND CPS.manufacturerid=ctb.manufacturerid'); 
Смежные вопросы