Beispiel #1
0
 /**
  * 
  * @return Zend_Db_Select
  */
 protected function _prepareQuery(Mzax_Emarketing_Db_Select $query)
 {
     $conditions = $this->_getConditions();
     $aggregator = $this->getDataSetDefault('aggregator', self::DEFAULT_AGGREGATOR);
     $expectation = $this->getDataSetDefault('expectation', self::DEFAULT_EXPECTATION);
     $select = $this->_combineConditions($conditions, $aggregator, $expectation);
     // if value can match zero include all records
     if ($this->checkIfMatchZero('value')) {
         $zeroRecords = $this->getQuery();
         // assume all orders have items, no right join required
         $zeroRecords->setColumn('sum_field', new Zend_Db_Expr('0'));
         $zeroRecords->setColumn('matches', new Zend_Db_Expr('0'));
         $select = $this->_select()->union(array($zeroRecords, $select));
     }
     $query->useTemporaryTable($this->getTempTableName());
     $query->joinSelect('order_id', $select, 'filter');
     $query->addBinding('value', new Zend_Db_Expr('SUM(`filter`.`sum_field`)'));
     $query->having($this->getWhereSql('value', '{value}'));
     $query->group();
 }