Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save PorraphitChuasuk/81faeff4d7d04a1e958dd343c7146ed8 to your computer and use it in GitHub Desktop.
Save PorraphitChuasuk/81faeff4d7d04a1e958dd343c7146ed8 to your computer and use it in GitHub Desktop.

Revisions

  1. @evgv evgv created this gist Jun 28, 2016.
    30 changes: 30 additions & 0 deletions mage_get_select_count_sql_distinct.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    ```php
    /**
    * Get SQL for get record count
    *
    * Rewrited for GROUP_BY
    * @return Varien_Db_Select
    */
    public function getSelectCountSql()
    {
    $this->_renderFilters();

    $countSelect = clone $this->getSelect();
    $countSelect->reset(Zend_Db_Select::ORDER);
    $countSelect->reset(Zend_Db_Select::LIMIT_COUNT);
    $countSelect->reset(Zend_Db_Select::LIMIT_OFFSET);
    $countSelect->reset(Zend_Db_Select::COLUMNS);

    // Count doesn't work with group by columns keep the group by
    if(count($this->getSelect()->getPart(Zend_Db_Select::GROUP)) > 0) {
    $countSelect->reset(Zend_Db_Select::GROUP);
    $countSelect->distinct(true);
    $group = $this->getSelect()->getPart(Zend_Db_Select::GROUP);
    $countSelect->columns("COUNT(DISTINCT ".implode(", ", $group).")");
    } else {
    $countSelect->columns('COUNT(*)');
    }
    return $countSelect;
    }

    ```