/** * Performs a merged query between this object and an additional object $addXmlSql : * the fields are taken from $addXmlSql, while the joins, where and groupby are merged. * * @param XmlQuery $addXmlSql * @return object with ->_tbl set properly. */ protected function &queryObjectMergedXmlSql($addXmlSql) { $sql = "SELECT " . implode(', ', $addXmlSql->fieldsArray) . " FROM `" . $this->_db->getEscaped($this->_table) . "` AS " . $this->maintableAs . (count($this->leftJoinArray) + count($addXmlSql->leftJoinArray) > 0 ? "\n " . implode("\n ", array_merge($this->leftJoinArray, $addXmlSql->leftJoinArray)) : '') . (count($this->where) + count($addXmlSql->where) > 0 ? "\n WHERE ( " . implode(' ) AND ( ', array_merge($this->where, $addXmlSql->where)) . " )" : '') . (count($addXmlSql->groupByArray) > 0 ? "\n GROUP BY " . implode(', ', $addXmlSql->groupByArray) : '') . (count($this->having) + count($addXmlSql->having) > 0 ? "\n HAVING ( " . implode(' ) AND ( ', array_merge($this->having, $addXmlSql->having)) . " )" : ''); $this->_db->setQuery($sql); $array = $this->_db->loadAssoc(); $statisticObj = new CheckedOrderedTable($this->_db, $this->_table, 'id'); foreach ($array as $k => $v) { $statisticObj->{$k} = $v; } return $statisticObj; }