J'essayais de comprendre comment utiliser le WITH
et l'objectif de la WITH
clause.
Tout ce que j'ai compris, c'est que le WITH
a remplacé les sous-requêtes normales.
Quelqu'un peut-il m'expliquer cela en détail à l'aide d'un petit exemple ?
J'essayais de comprendre comment utiliser le WITH
et l'objectif de la WITH
clause.
Tout ce que j'ai compris, c'est que le WITH
a remplacé les sous-requêtes normales.
Quelqu'un peut-il m'expliquer cela en détail à l'aide d'un petit exemple ?
La clause SQL WITH a été introduite par Oracle dans la base de données Oracle 9i version 2. La clause SQL WITH vous permet de donner un nom à un bloc de sous-requêtes (un processus également appelé refactoring de sous-requêtes), qui peut être référencé à plusieurs endroits dans la requête SQL principale. Le nom attribué à la sous-requête est traité comme s'il s'agissait d'une vue ou d'une table en ligne. La clause SQL WITH est en fait un remplacement direct de la sous-requête normale.
Syntaxe de la clause SQL WITH
Voici la syntaxe de la clause SQL WITH lors de l'utilisation d'un alias de sous-requête unique.
WITH <alias_name> AS (sql_subquery_statement)
SELECT column_list FROM <alias_name>[,table_name]
[WHERE <join_condition>]
Lorsque vous utilisez plusieurs alias de sous-requêtes, la syntaxe est la suivante.
WITH <alias_name_A> AS (sql_subquery_statement),
<alias_name_B> AS(sql_subquery_statement_from_alias_name_A
or sql_subquery_statement )
SELECT <column_list>
FROM <alias_name_A>, <alias_name_B> [,table_names]
[WHERE <join_condition>]
Dans la documentation syntaxique ci-dessus, les occurrences de alias_name
est un nom significatif que vous donnerez à la sous-requête après la clause AS. Chaque sous-requête doit être séparée par une virgule. Exemple d'instruction WITH . Le reste des requêtes suit les formats standard des requêtes SQL SELECT simples et complexes.
Pour plus d'informations : http://www.brighthub.com/internet/web-development/articles/91893.aspx
Je l'ai déjà vu, pouvez-vous expliquer cela avec un petit exemple qui serait plus facile à comprendre.
Je pense que vous avez besoin d'une virgule après l'expression "AVEC". <alias_name_A> AS (sql_subquery_statement)
lors de l'utilisation de plusieurs alias de sous-requêtes.
Cette question a reçu une réponse complète ici .
Voir Documents d'Oracle sur SELECT pour voir comment la factorisation des sous-requêtes fonctionne, et l'exemple de Mark :
WITH employee AS (SELECT * FROM Employees)
SELECT * FROM employee WHERE ID < 20
UNION ALL
SELECT * FROM employee WHERE Sex = 'M'
Oui, en fait, il remplace une sous-requête MAIS vous permet de référencer le résultat de la "sous-requête" à plusieurs endroits.
Ne devriez-vous pas mentionner les attributs dans la parenthèse au lieu de (SELECT * FROM Employees) ? Par exemple, WITH employee AS (Name, ID).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
msdn.microsoft.com/en-us/library/ms175972(v=sql.105).aspx
3 votes
Utilisez-vous MYSQL ? car il n'est pas supporté.
0 votes
J'ai mis au point un exemple d'utilisation de la clause WITH pour créer une table statique temporaire. Vous trouverez peut-être cela utile, car il contient des exemples sur la façon d'utiliser les clauses WITH dans vos requêtes. giombetti.com/2014/02/14/…
3 votes
Depuis que l'OP a posté son message, MySQL a implémenté l'instruction WITH : dev.mysql.com/doc/refman/8.0/fr/with.html
5 votes
À mon avis, il n'est pas du tout approprié d'indiquer qu'il s'agit d'un doublon, d'autant plus qu'au niveau débutant, personne ne cliquerait jamais sur la question et que, deuxièmement, la réponse est très différente. Et celle-ci est plus utile sur le plan pratique...