public function sql()
{
$return = 'SELECT ' . $this->_select;
if ($this->dbtype == 'oci' and $this->_offset) {
$return .= ', ROWNUM oci_rownum ';
}
$return .= ' FROM ' . $this->_from;
if ($this->_join) {
$return .= ' ' . $this->_join;
}
if ($this->_where) {
$return .= ' WHERE ' . $this->_where;
if ($this->dbtype == 'oci' and $this->_limit > 0) {
$return .= ' AND ROWNUM <= ' . ($this->_limit + $this->_offset);
}
} elseif ($this->dbtype == 'oci' and $this->_limit > 0) {
$return .= ' WHERE ROWNUM <= ' . ($this->_limit + $this->_offset);
}
if ($this->_group) {
$return .= ' GROUP BY ' . $this->_group;
}
if ($this->_having) {
$return .= ' HAVING ' . $this->_having;
}
if ($this->_order) {
$return .= ' ORDER BY ' . $this->_order;
}
if ($this->dbtype == 'mysql') {
if ($this->_limit) {
$return .= ' LIMIT ' . $this->_limit;
}
if ($this->_offset) {
$return .= ' OFFSET ' . $this->_offset;
}
} elseif ($this->dbtype == 'oci' and $this->_offset > 0) {
$return = 'SELECT ' . $this->_select . ' FROM (' . $return . ') WHERE oci_rownum >= ' . ($this->_offset + 1);
}
return $return;
}