Bonjour,
Je cherche un équivalent du WITH ORACLE en SQL Server?
(WITH existe en SQL Server mais n'a pas du tout le même intérêt)
Bonjour,
Je cherche un équivalent du WITH ORACLE en SQL Server?
(WITH existe en SQL Server mais n'a pas du tout le même intérêt)
que fait la fonction WITH sous Oracle? (je ne m'en rappel pas)
Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous
Mon Tutoriel pour apprendre les Agregations
Consultez mon Blog SQL destiné aux débutants
Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server
En gros cela revient à créer des tables temporaires... sauf qu'il ne pollue pas la session utilisateur avec des tables temporaires
Cela fait partie de la norme SQL:1999 et s'appelle la Common Table Expression (CTE). C'est parfaitement implémenté dans SQL Server depuis la version 2005, c'est à dire avant l'implémentation sous Oracle !!!
Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/s...te-recursives/
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Merci beaucoup pour l'article!
En fait la syntaxe est légèrement différente mais le concept est le mm! voilà qui devrait grandement m'aider à optimiser bon nombre de requêtes!
![]()
9i tu es sûr ??? Parce que dans mes souvenirs ce n'étais même pas dans la v10g à sa sortie...
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
ha ?
on ne parle peut-être pas de la même chose alors ?
http://download.oracle.com/docs/cd/B...9ir1.htm#70695
ou encore ceci :
http://www.oracle.com/technology/pro...ily/oct10.html
Ce WITH est effectivement une version incomplète ne gérant apparemment pas la récursivité. Or l'intérêt principal du WITH est d'introduire la récursivité des requête afin d'effectuer des parcours d'arbres et de graphes tel que la norme SQL l'a prévue. Or ce ne semble pas être du tout le cas de ce WITH d'Oracle dans la version que tu as mentionné !
Lisez l'article que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/s...te-recursives/
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Je viens donc d'implémenter mon premier WITH
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 WITH doublon (num_voie, type_voie, adresse1, adresse2, cp, commune, nb) AS ( SELECT ca.num_voie,ca.type_voie,ca.adresse1, ca.adresse2,pcp.cp,pcp.commune, count(*) as nb FROM client_adresse ca LEFT OUTER JOIN param_code_postal pcp ON pcp.id_cp = ca.id_cp WHERE pcp.cp <> '00000' AND ca.id_type_adresse = 1 GROUP BY ca.num_voie,ca.type_voie,ca.adresse1, ca.adresse2,pcp.cp,pcp.commune HAVING count(*) > 1 --ORDER BY pcp.cp,pcp.commune,ca.type_voie,ca.adresse1, ca.adresse2 ) SELECT client.id_client FROM client INNER JOIN client_adresse ON client_adresse.id_client = client.id_client AND client_adresse.id_type_adresse = 1 INNER JOIN doublon ON client_adresse.num_voie = doublon.num_voie AND client_adresse.type_voie = doublon.type_voie AND client_adresse.adresse1 = doublon.adresse1 AND client_adresse.adresse2 = doublon.adresse2 AND client_adresse.cp = doublon.cp AND client_adresse.commune = doublon.commune
Mais j'ai l'erreur SQL suivante :
Msg*156, Niveau*15, État*1, Ligne*1
Syntaxe incorrecte vers le mot clé 'WITH'.
Et je ne voie vraiment pas pourquoi... une idée?
Mettez un point virgule sur la ligne qui précède le WITH.
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Partager