2007-04-14 01:49:11 +04:00
SELECT statement syntax :
< code >
SELECT
[ ALL | DISTINCT ]
2007-04-14 03:33:37 +04:00
< select_expr > , ...
[ FROM < components >
[ WHERE < where_condition > ]
[ GROUP BY < groupby_expr >
2007-04-14 01:49:11 +04:00
[ ASC | DESC ], ... ]
2007-04-14 03:33:37 +04:00
[ HAVING < where_condition > ]
[ ORDER BY < orderby_expr >
2007-04-14 01:49:11 +04:00
[ ASC | DESC ], ... ]
2007-04-14 03:33:37 +04:00
[ LIMIT < row_count > OFFSET < offset > }]
2007-04-14 01:49:11 +04:00
</ code >
The SELECT statement is used for the retrieval of data from one or more components .
* Each //select_expr// indicates a column or an aggregate function value that you want to retrieve. There must be at least one //select_expr// in every SELECT statement.
< code >
SELECT a . name , a . amount FROM Account a
</ code >
2007-04-14 03:33:37 +04:00
* An asterisk can be used for selecting all columns from given component . Even when using an asterisk the executed sql queries never actually use it
2007-04-14 01:49:11 +04:00
( Doctrine converts asterisk to appropriate column names , hence leading to better performance on some databases ) .
< code >
SELECT a .* FROM Account a
</ code >
* FROM clause //components// indicates the component or components from which to retrieve records.
< code >
SELECT a .* FROM Account a
SELECT u .* , p .* , g .* FROM User u LEFT JOIN u . Phonenumber p LEFT JOIN u . Group g
</ code >
* The WHERE clause , if given , indicates the condition or conditions that the records must satisfy to be selected . //where_condition// is an expression that evaluates to true for each row to be selected. The statement selects all rows if there is no WHERE clause.
< code >
SELECT a .* FROM Account a WHERE a . amount > 2000
</ code >
* In the WHERE clause , you can use any of the functions and operators that DQL supports , except for aggregate ( summary ) functions
* The HAVING clause can be used for narrowing the results with aggregate functions
< code >
SELECT u .* FROM User u LEFT JOIN u . Phonenumber p HAVING COUNT ( p . id ) > 3
</ code >
* The ORDER BY clause can be used for sorting the results
< code >
SELECT u .* FROM User u ORDER BY u . name
</ code >
* The LIMIT and OFFSET clauses can be used for efficiently limiting the number of records to a given //row_count//
< code >
SELECT u .* FROM User u LIMIT 20
</ code >
2007-04-13 00:52:30 +04:00