Beispiel #1
0
	/**
	 * Returns SQL query.
	 * @param  list of columns
	 * @return string
	 */
	public function buildSelectQuery($columns = NULL)
	{
		$join = $this->buildJoins(implode(',', $this->conditions), TRUE);
		$join += $this->buildJoins(implode(',', $this->select) . ",{$this->group},{$this->having}," . implode(',', $this->order));

		$prefix = $join ? "{$this->delimitedTable}." : '';
		if ($this->select) {
			$cols = $this->tryDelimite($this->removeExtraTables(implode(', ', $this->select)));

		} elseif ($columns) {
			$cols = array_map(array($this->driver, 'delimite'), $columns);
			$cols = $prefix . implode(', ' . $prefix, $cols);

		} elseif ($this->group && !$this->driver->isSupported(ISupplementalDriver::SUPPORT_SELECT_UNGROUPED_COLUMNS)) {
			$cols = $this->tryDelimite($this->removeExtraTables($this->group));

		} else {
			$cols = $prefix . '*';

		}

		return "SELECT{$this->buildTopClause()} {$cols} FROM {$this->delimitedTable}" . implode($join) . $this->buildConditions();
	}