/** * Return data of rating summary * * @param Mage_Rating_Model_Rating $object * @return array */ protected function _getEntitySummaryData($object) { $adapter = $this->_getReadAdapter(); $sumColumn = new Zend_Db_Expr("SUM(rating_vote.{$adapter->quoteIdentifier('percent')})"); $countColumn = new Zend_Db_Expr("COUNT(*)"); $select = $adapter->select()->from(array('rating_vote' => $this->getTable('rating/rating_option_vote')), array('entity_pk_value' => 'rating_vote.entity_pk_value', 'sum' => $sumColumn, 'count' => $countColumn))->join(array('review' => $this->getTable('review/review')), 'rating_vote.review_id=review.review_id', array())->joinLeft(array('review_store' => $this->getTable('review/review_store')), 'rating_vote.review_id=review_store.review_id', array('review_store.store_id'))->join(array('rating_store' => $this->getTable('rating/rating_store')), 'rating_store.rating_id = rating_vote.rating_id AND rating_store.store_id = review_store.store_id', array())->join(array('review_status' => $this->getTable('review/review_status')), 'review.status_id = review_status.status_id', array())->where('review_status.status_code = :status_code')->group('rating_vote.entity_pk_value')->group('review_store.store_id'); $bind = array(':status_code' => self::RATING_STATUS_APPROVED); $entityPkValue = $object->getEntityPkValue(); if ($entityPkValue) { $select->where('rating_vote.entity_pk_value = :pk_value'); $bind[':pk_value'] = $entityPkValue; } return $adapter->fetchAll($select, $bind); }
/** * Return data of rating summary * * @param Mage_Rating_Model_Rating $object * @return array */ protected function _getEntitySummaryData($object) { $read = $this->_getReadAdapter(); $sql = "SELECT\n {$this->getTable('rating_vote')}.entity_pk_value as entity_pk_value,\n SUM({$this->getTable('rating_vote')}.percent) as sum,\n COUNT(*) as count,\n {$this->getTable('review/review_store')}.store_id\n FROM\n {$this->getTable('rating_vote')}\n INNER JOIN\n {$this->getTable('review/review')}\n ON {$this->getTable('rating_vote')}.review_id={$this->getTable('review/review')}.review_id\n LEFT JOIN\n {$this->getTable('review/review_store')}\n ON {$this->getTable('rating_vote')}.review_id={$this->getTable('review/review_store')}.review_id\n INNER JOIN\n {$this->getTable('rating/rating_store')} AS rst\n ON rst.rating_id = {$this->getTable('rating_vote')}.rating_id AND rst.store_id = {$this->getTable('review/review_store')}.store_id\n INNER JOIN\n {$this->getTable('review/review_status')} AS review_status\n ON {$this->getTable('review/review')}.status_id = review_status.status_id\n WHERE "; if ($object->getEntityPkValue()) { $sql .= "{$read->quoteInto($this->getTable('rating_vote') . '.entity_pk_value=?', $object->getEntityPkValue())} AND "; } $sql .= "review_status.status_code = 'approved'\n GROUP BY\n {$this->getTable('rating_vote')}.entity_pk_value, {$this->getTable('review/review_store')}.store_id"; return $read->fetchAll($sql); }