/** * Compiles a SELECT query. * * @access public * @param SQLStatement $select * @return array */ public function select(SQLStatement $select) { $sql = $select->getDistinct() ? 'SELECT DISTINCT ' : 'SELECT '; $sql .= $this->handleColumns($select->getColumns()); $sql .= $this->handleInto($select->getIntoTable(), $select->getIntoDatabase()); $sql .= ' FROM '; $sql .= $this->handleTables($select->getTables()); $sql .= $this->handleJoins($select->getJoins()); $sql .= $this->handleWheres($select->getWheres()); $sql .= $this->handleGroupings($select->getGroupBy()); $sql .= $this->handleOrderings($select->getOrder()); $sql .= $this->handleHavings($select->getHaving()); $sql .= $this->handleOffset($select->getOffset(), $select->getLimit()); $sql .= $this->handleLimit($select->getLimit(), $select->getOffset()); return $sql; }