2010-09-15 3 views
0

SQL Server novice ici.L'identificateur multi-parties n'a pas pu être lié - Mise à jour requête SQL Server 2005

UPDATE dbo.ObjectivesApproved 
SET dbo.ObjectivesApproved.VAP = 'Y' 
WHERE ((dbo.Approved.Cri_Group In ('X01' ,'X02' ,'X03' ,'X04' ,'X05' ,'X07' ,'X08' ,'X09' ,'X10' ,'X11' ,'X12' ,'X13' ,'X14'))) 

donne l'erreur suivante

The multi-part identifier "dbo.Approved.Cri_Group" could not be bound. 

Qu'est-ce qui provoque l'erreur?

Mise à jour: La requête ci-dessus a été effectuée suite à des essais et des erreurs. Je suis en train de mettre à jour une application d'accès au serveur SQL et d'avoir des problèmes avec les différents dialectes de SQL.

Ceci est ma requête originale.

UPDATE dbo.Approved 
INNER JOIN dbo.ObjectivesApproved ON dbo.Approved.ID = dbo.ObjectivesApproved.ID 
SET dbo.ObjectivesApproved.VAP = 'Y' 
WHERE ((dbo.Approved.Cri_Group 
In ('X01' ,'X02' ,'X03' ,'X04' ,'X05' ,'X07' ,'X08' ,'X09' ,'X10' ,'X11' ,'X12' ,'X13' ,'X14'))); 

Cela donne à l'erreur - syntaxe incorrecte près du mot-clé « INNER »

merci

Répondre

5

Cela se traduirait par

UPDATE 
    OA 
SET 
    OA.VAP = 'Y' 
FROM 
    dbo.Approved AS A 
    INNER JOIN dbo.ObjectivesApproved OA ON A.ID = OA.ID 
WHERE 
    A.Cri_Group IN ('X01' ,'X02' ,'X03' ,'X04' ,'X05' ,'X07' ,'X08' ,'X09' ,'X10' ,'X11' ,'X12' ,'X13' ,'X14') 
+0

+1, cela devrait résoudre votre problème. Lire sur l'alias de table si vous êtes confus au sujet de pourquoi il semble si différent. –

1

Vous n'êtes pas en précisant que la mise à jour utilise également le partout tableau Approved, au lieu que vous venez aller de l'avant et à l'utilisation un si ses colonnes.

Sur une autre note, votre mise à jour s'annonce illogisme de trop que vous mettez à jour les dossiers ObjectivesApproved indépendamment de ce qu'ils contiennent, à savoir il n'y a pas de relation entre ObjectivesApproved mentionné et Approved.

Questions connexes