[SQL SERVER 2000] UPDATE avec jointure
Bonjour à tous,
J'avais à ce jour une requête de mise à jour qui s'effectuait ainsi :
Code:
1 2 3 4 5 6
|
UPDATE TABLE_A
SET champ1 = (a.champ2 + 'XX')
FROM TABLE_A a
WHERE champ3 = a.champ3
AND champ4 = a.champ4 |
Je dois la modifier en faisant une jointure sur une autre table :
Code:
1 2 3 4 5 6 7 8
|
UPDATE TABLE_A
SET champ1 = (a.champ2 + 'XX')
FROM TABLE_A a
INNER JOIN TABLE_B b
ON a.champ3 = b.champ3
WHERE champ3 = a.champ3
AND champ4 = a.champ4 |
Ce code ne marche pas : il considère qu'il y a ambiguïté sur le terme champ3 dans la clause WHERE (et il n'a pas tort !).
Bien sur, je ne peux pas mettre un alias sur ma table ainsi :
Code:
1 2 3 4 5 6 7 8
|
UPDATE TABLE_A a1
SET champ1 = (a2.champ2 + 'XX')
FROM TABLE_A a2
INNER JOIN TABLE_B b
ON a1.champ3 = b.champ3
WHERE a2.champ3 = a1.champ3
AND a2.champ4 = a1.champ4 |
(ça, il aime pas du tout du tout)
J'ai donc inclus ma jointure dans ma clause WHERE ainsi :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
UPDATE TABLE_A
SET champ1 = (a.champ2 + 'XX')
FROM TABLE_A a
WHERE champ3 = a.champ3
AND champ3 IN
(
SELECT b.champ3 FROM TABLE_B b
INNER JOIN TABLE_A a
ON a.champ3 = b.champ3
AND a.champ4 = b.champ4
)
AND champ4 = a.champ4
AND champ4 IN
(
SELECT b.champ4 FROM TABLE_B b
INNER JOIN TABLE_A a
ON a.champ3 = b.champ3
AND a.champ4 = b.champ4
) |
Mais bon personnellement, je trouve ça plus lourd...
Quelqu'un aurait une idée ?
D'avance merci.