1
0
mirror of synced 2024-12-14 15:16:04 +03:00
doctrine2/manual/docs/DQL (Doctrine Query Language) - SELECT queries.php

56 lines
2.0 KiB
PHP
Raw Normal View History

2007-04-14 01:49:11 +04:00
SELECT statement syntax:
<code>
SELECT
[ALL | DISTINCT]
<select_expr>, ...
[FROM <components>
[WHERE <where_condition>]
[GROUP BY <groupby_expr>
2007-04-14 01:49:11 +04:00
[ASC | DESC], ... ]
[HAVING <where_condition>]
[ORDER BY <orderby_expr>
2007-04-14 01:49:11 +04:00
[ASC | DESC], ...]
[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>
* 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>