Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/02/2011, 12h39   #1
Membre à l'essai
 
Inscription : février 2011
Messages : 60
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2011
Messages : 60
Points : 21
Points : 21
Par défaut imbriquer une requête

Bonjour,

Est ce que c'est possible de requêter sur le jeu de résultat de WITH ?.
Je veux appliquer un sélect (autre instructions) sur le résultat retourné par une requête récurcive.
Si j'applique un simple select sur la requête du with ce mesage d'erreur apparait:
Citation:
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
J'ai pas compri le problème.
Merci d'avance .
AJ_ing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 09h44   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 950
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 950
Points : 17 769
Points : 17 769
commencez par poster le texte de la requête.

Respectez la charte de postage : http://www.developpez.net/forums/d96...vement-poster/

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 10h48   #3
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 552
Points : 552
Bonjour,
Citation:
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
SQL server te demande de vérifier si l'instruction précédent le with se termine bien par un point virgule. Cela a l'air de rien, je me suis fait avoir aussi, il faut juste qu'il y ait un ; sur la fin de l'instruction.
Par exemple si tu as
Code :
1
2
SET @mavariable='toto'
WITH...
Tu auras le message d'erreur, tandis qu'avec
Code :
1
2
SET @mavariable='toto';
WITH...
Tu n'auras pas ce message d'erreur.
Mais sur le fond, je suis d'accord avec SQL pro, avec le texte de la requête que tu as écris, c'est plus facile de t'aider.
Cordialement
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 08h59   #4
Membre à l'essai
 
Inscription : février 2011
Messages : 60
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2011
Messages : 60
Points : 21
Points : 21
Bonjour,
Voici la première requête dont je veux appliquer d'autres instructions:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
WITH resultat (FK_ARTICLE, DEBTF, FINTF ,FIN_PR)
AS
(
     SELECT e.FK_ARTICLE,e.DEBTF,e.FINTF,e.FIN_PR
     FROM
    (SELECT FK_ARTICLE, DEBTF, FINTF ,debtf AS DEB_PR,
     dbo.min_date (DEBTF, FINTF, DEBRD, FINRD, DEBRP, FINRP, DEBTX, FINTX) AS FIN_PR 
     FROM tarif_test.dbo.tab) AS e
 
     UNION ALL
     SELECT e.FK_ARTICLE,e.DEBTF,e.FINTF,e.FIN_PR 
     FROM 
    (SELECT FK_ARTICLE, DEBTF, FINTF ,debtf AS DEB_PR,
     dbo.min_date (DEBTF, FINTF, DEBRD, FINRD, DEBRP, FINRP, DEBTX, FINTX) AS FIN_PR 
     FROM tarif_test.dbo.tab) AS e   
     INNER JOIN resultat AS d
     ON e.FIN_PR = d.debtf 
)
SELECT  FK_ARTICLE, DEBTF, FINTF,FIN_PR
FROM resultat
Comment requêter sur le résultat de celle là.

Merci.
AJ_ing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 16h01   #5
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 667
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 667
Points : 8 715
Points : 8 715
Bonjour,

Les expressions de table commune nécessitent un point-virgule après la dernière instruction les précédant.
Il vous suffit donc de mettre un point-virgule à cette dernière, ou d'en mettre un juste devant le WITH

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h25.


 
 
 
 
Partenaires

Hébergement Web