コード例 #1
0
ファイル: DB2.php プロジェクト: cgslivre/database-1
 /**
  * Returns the SQL for a select statement
  * 
  * @param   \Opis\Database\SQL\SelectStatement  $select
  * 
  * @return  string
  */
 public function select(SelectStatement $select)
 {
     $limit = $select->getLimit();
     $offset = $select->getOffset();
     if ($limit === null && $offset === null) {
         return parent::select($select);
     }
     $order = trim($this->handleOrderings($select->getOrderClauses()));
     if (empty($order)) {
         $order = 'ORDER BY (SELECT 0)';
     }
     $sql = $select->isDistinct() ? 'SELECT DISTINCT ' : 'SELECT ';
     $sql .= $this->handleColumns($select->getColumns());
     $sql .= ', ROW_NUMBER() OVER (' . $order . ') AS opis_rownum';
     $sql .= ' FROM ';
     $sql .= $this->handleTables($select->getTables());
     $sql .= $this->handleJoins($select->getJoinClauses());
     $sql .= $this->handleWheres($select->getWhereConditions());
     $sql .= $this->handleGroupings($select->getGroupClauses());
     $sql .= $this->handleHavings($select->getHavingConditions());
     if ($offset === null) {
         $offset = 0;
     }
     $limit += $offset;
     $offset++;
     return 'SELECT * FROM (' . $sql . ') AS m1 WHERE opis_rownum BETWEEN ' . $offset . ' AND ' . $limit;
 }
コード例 #2
0
ファイル: Oracle.php プロジェクト: Textalk/opis-database
 /**
  * Compiles a SELECT query.
  *
  * @access  public
  * @param   \Opis\Database\SQL\SelectStatament    $select  Query object.
  * @return  array
  */
 public function select(SelectStatement $select)
 {
     $limit = $select->getLimit();
     $offset = $select->getOffset();
     if ($limit === null && $offset === null) {
         return parent::select($select);
     }
     $sql = $select->isDistinct() ? 'SELECT DISTINCT ' : 'SELECT ';
     $sql .= $this->handleColumns($select->getColumns());
     $sql .= ' FROM ';
     $sql .= $this->handleTables($select->getTables());
     $sql .= $this->handleJoins($select->getJoinClauses());
     $sql .= $this->handleWheres($select->getWhereConditions());
     $sql .= $this->handleGroupings($select->getGroupClauses());
     $sql .= $this->handleOrderings($select->getOrderClauses());
     $sql .= $this->handleHavings($select->getHavingConditions());
     if ($offset === null) {
         return 'SELECT * FROM (' . $sql . ') M1 WHERE ROWNUM <= ' . $limit;
     }
     $limit += $offset;
     $offset++;
     return 'SELECT * FROM (SELECT M1.*, ROWNUM AS OPIS_ROWNUM FROM (' . $sql . ') M1 WHERE ROWNUM <= ' . $limit . ') WHERE OPIS_ROWNUM >= ' . $offset;
 }
コード例 #3
0
ファイル: Select.php プロジェクト: cgslivre/database-1
 /**
  * @param   string  $column
  * @param   bool    $distinct   (optional)
  * 
  * @return  int|float
  */
 public function max($column, $distinct = false)
 {
     parent::max($column, $distinct);
     return $this->connection->column((string) $this, $this->compiler->getParams());
 }
コード例 #4
0
ファイル: BaseQuery.php プロジェクト: cgslivre/database-1
 /**
  * @return  $this
  */
 public function distinct()
 {
     $this->query->distinct();
     return $this;
 }
コード例 #5
0
ファイル: Firebird.php プロジェクト: Textalk/opis-database
 /**
  * Compiles a SELECT query.
  *
  * @access  public
  * @param   \Opis\Database\SQL\SelectStatement    $select  Select object.
  * @return  array
  */
 public function select(SelectStatement $select)
 {
     $sql = $select->isDistinct() ? '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->getJoinClauses());
     $sql .= $this->handleWheres($select->getWhereConditions());
     $sql .= $this->handleGroupings($select->getGroupClauses());
     $sql .= $this->handleOrderings($select->getOrderClauses());
     $sql .= $this->handleHavings($select->getHavingConditions());
     $sql .= $this->handleOffset($select->getOffset(), $select->getLimit());
     $sql .= $this->handleLimit($select->getLimit(), $select->getOffset());
     return $sql;
 }
コード例 #6
0
ファイル: Select.php プロジェクト: cgslivre/database-1
 /**
  * @param   array   $columns    (optional)
  *
  * @return  $this
  */
 public function select($columns = array())
 {
     $this->sql = null;
     return parent::select($columns);
 }