protected function _getBaseCollectionSql()
 {
     $alias = 'attr_index_' . $this->getAttributeModel()->getId();
     // Varien_Db_Select
     $baseSelect = clone parent::_getBaseCollectionSql();
     // 1) remove from conditions
     $oldWhere = $baseSelect->getPart(Varien_Db_Select::WHERE);
     $newWhere = array();
     foreach ($oldWhere as $cond) {
         if (!strpos($cond, $alias)) {
             $newWhere[] = $cond;
         }
     }
     if ($newWhere && substr($newWhere[0], 0, 3) == 'AND') {
         $newWhere[0] = substr($newWhere[0], 3);
     }
     $baseSelect->setPart(Varien_Db_Select::WHERE, $newWhere);
     // 2) remove from joins
     $oldFrom = $baseSelect->getPart(Varien_Db_Select::FROM);
     $newFrom = array();
     foreach ($oldFrom as $name => $val) {
         if ($name != $alias) {
             $newFrom[$name] = $val;
         }
     }
     //it assumes we have at least one table
     $baseSelect->setPart(Varien_Db_Select::FROM, $newFrom);
     return $baseSelect;
 }
 protected function _getBaseCollectionSql()
 {
     $alias = $this->_getAttributeTableAlias();
     $baseSelect = clone parent::_getBaseCollectionSql();
     $oldWhere = $baseSelect->getPart(Varien_Db_Select::WHERE);
     $newWhere = array();
     foreach ($oldWhere as $cond) {
         if (!strpos($cond, $alias)) {
             $newWhere[] = $cond;
         }
     }
     if ($newWhere && substr($newWhere[0], 0, 3) == 'AND') {
         $newWhere[0] = substr($newWhere[0], 3);
     }
     $baseSelect->setPart(Varien_Db_Select::WHERE, $newWhere);
     $oldFrom = $baseSelect->getPart(Varien_Db_Select::FROM);
     $newFrom = array();
     foreach ($oldFrom as $name => $val) {
         if ($name != $alias) {
             $newFrom[$name] = $val;
         }
     }
     $baseSelect->setPart(Varien_Db_Select::FROM, $newFrom);
     return $baseSelect;
 }