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)
Arrêtez de poster des liens! Expliquez! (ça évite les erreur HTTP 404)
L'homme est plus fort que la machine... ne renoncez jamais
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
Arrêtez de poster des liens! Expliquez! (ça évite les erreur HTTP 404)
L'homme est plus fort que la machine... ne renoncez jamais
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!
![]()
Arrêtez de poster des liens! Expliquez! (ça évite les erreur HTTP 404)
L'homme est plus fort que la machine... ne renoncez jamais
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?
Arrêtez de poster des liens! Expliquez! (ça évite les erreur HTTP 404)
L'homme est plus fort que la machine... ne renoncez jamais
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/ * * * * *
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager