IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

PB avec la clause WITH


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut PB avec la clause WITH
    Bonjour a tous

    j'ai un probleme avec la clause with que je n'arrive pas a utiliser.

    j'ai une sous requete que j'appelle a 3 reprises dans ma requete principale.
    la requete marche bien.

    pour l'optimiser je voudrais donc utiliser le with, et d'apres mes recherches la syntaxe de ma requete me semble bonne :

    Code : 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
    WITH TabTemp(numprd, numnat, dateclot, numctrt)
    AS 
    (
    	SELECT P.IDPRDT, P.IDNTCT, C.DATCLO, C.IDCTRT
    	FROM AVPDTS AS P
    	INNER JOIN AVCTRT AS C ON P.IDPRDT = C.IDPRDT
    	WHERE C.REFCTR = '86900078'
    	AND DATCLO IS NULL
    )
     
    SELECT *
    FROM TabTemp
    WHERE numnat = CASE (select count (*) from TabTemp)
    		 WHEN 1 THEN numnat
    		 WHEN 2 THEN (SELECT numnat FROM TabTemp WHERE numnat <> 3)
    		 ELSE 0
    	       END
    Mais j'ai le message d'erreur suivant :
    "Syntaxe incorrecte vers le mot clé 'WITH'."

    Je ne comprends vraiment pas car il me semble que je respecte la syntaxe vue dans des exemples.

    Si quelqu'un a une petite idée ca serait super cool

    merci par avance a ceux qui se pencheront sur ce probleme.

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    Exécutes-tu ta requête dans un batch, et si oui, est-ce que l'instruction précédente est bien terminée par un point-virgule ?

  3. #3
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut
    Citation Envoyé par rudib
    Exécutes-tu ta requête dans un batch, et si oui, est-ce que l'instruction précédente est bien terminée par un point-virgule ?
    Non c'est une requete unique qui n'est pas dans un batch que je teste simplement pour le moment dans l'analyseur de requete de mssql server.

    La clause with est elle implémentée sur Ms Sql Server 2000? ( je n'ai pas trouvé la réponse)

  4. #4
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Ah, évidemment... Non, le WITH n'est implémenté qu'à partir de SQL Server 2005

  5. #5
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut
    Arffff

    Y aurait-il quelque chose de semblable pour MSSQL 2000?
    Ou un moyen de ne pas copier la sous requete plusieurs fois et ainsi ne pas la réexecuter a chaque fois? ... sans passer par une table temporaire

    merci rudib pour ta reponse rapide

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 19
    Par défaut
    Utilise une table temporaire #TabTemp...

    _

  7. #7
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut
    Citation Envoyé par faflenrage
    ... sans passer par une table temporaire
    fallait peut etre que je l'ecrive en majuscule..?!?!

    l'utilisation de table temporaire est tro lourde dans l'environement ou je veu appliquer la requete?

    Une autre solution?

Discussions similaires

  1. Requête avec clause with
    Par maamer dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 20/11/2012, 16h10
  2. Requête avec multiple clause where
    Par pgenet dans le forum Requêtes
    Réponses: 3
    Dernier message: 07/03/2006, 13h59
  3. [PL/SQL] curseur et clause WITH
    Par ljoly dans le forum Oracle
    Réponses: 6
    Dernier message: 24/01/2006, 14h26
  4. Pb avec la clause ORDER BY...
    Par Karibou dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 16/08/2005, 14h48
  5. [super requete] Dumper un model avec une clause where
    Par elievar dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2005, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo