Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 15/07/2008, 17h54   #1
Membre à l'essai
 
Inscription : janvier 2008
Messages : 63
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 63
Points : 23
Points : 23
Par défaut Erreur dans l'imbricage de "JOINs"

Bonjour,

J'ai une requête SQL avec plusieurs tables imbriquées, elle me retourne une erreur mais je ne comprends pas où est la faute, tout semble o.k. mais le message d'erreur n'est pas très explicatif.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
UPDATE PDB.dbo.TableClient 
	SET 	fkPFId = PDB.dbo.tblClientPFPFId, 
		Assignation = 0, 
		CaNa = 1
	FROM PDB.dbo.TableClient AS T70
	INNER JOIN ((PDB.dbo.TableClient INNER JOIN SMDB.dbo.PRE_LST_CLNT_ASSIGN_TEMPO 
		ON PDB.dbo.TableClient.ID_CLIENT_EDC 
							= SMDB.dbo.PRE_LST_CLNT_ASSIGN_TEMPO.EDC_ID_CLIENT) 
		INNER JOIN SMDB.dbo.CONFIG_ASSIGN_TEMPO 
			ON SMDB.dbo.PRE_LST_CLNT_ASSIGN_TEMPO.CLNT_INTR_CLE_SYNCHRO 
									= SMDB.dbo.CONFIG_ASSIGN_TEMPO.CLE_SYNCHRO) 
			ON ((PDB.dbo.tblClientPF.CleSyncEmp 
									= SMDB.dbo.CONFIG_ASSIGN_TEMPO.CLE_SYNCHRO) 
				AND (PDB.dbo.tblClientPF.CleSyncSucc 
									= SMDB.dbo.CONFIG_ASSIGN_TEMPO.SUCCURSALE) )
Le message d'erreur est :

Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "CentreTelebancaire.dbo.tblClientPortefeuille.CleSyncEmp" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "CentreTelebancaire.dbo.tblClientPortefeuille.CleSyncSucc" could not be bound.


Quelqu'un peut m'aider?

Merci d'avance.
TCW78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2008, 09h46   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
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 959
Points : 17 793
Points : 17 793
A priori votre votre requête devrait être écrite de la sorte

Code :
1
2
3
4
5
6
7
8
9
10
11
12
UPDATE TC
SET    fkPFId = PDB.dbo.tblClientPFPFId, 
       Assignation = 0, 
       CaNa = 1
FROM PDB.dbo.TableClient AS TC
     INNER JOIN SMDB.dbo.PRE_LST_CLNT_ASSIGN_TEMPO AS AT
		ON TC.ID_CLIENT_EDC = AT.EDC_ID_CLIENT
     INNER JOIN SMDB.dbo.CONFIG_ASSIGN_TEMPO AS CAT
			ON AT.CLNT_INTR_CLE_SYNCHRO = CAT.CLE_SYNCHRO
???
			ON TC.CleSyncEmp = CAT.CLE_SYNCHRO
				AND TC.CleSyncSucc = CAT.SUCCURSALE
Cependant vous avez visiblement une jointure circulaire qui peut indiquer un défaut du modèle :
TC est joint à AT qui est joint à CAT et CAT est joint à TC !!!!
Visiblement l'analyse à été bâclée et la requête peut ne rien faire....

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 17/07/2008, 15h06   #3
Membre à l'essai
 
Inscription : janvier 2008
Messages : 63
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 63
Points : 23
Points : 23
En effet, j'ai recréé la requête avec le Query Builder de SQL Management Studio et tout fonctionne.

Merci!
TCW78 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 21h24.


 
 
 
 
Partenaires

Hébergement Web