Sous-requête SQL

Bonjour à tous

J’ai un problème avec une sous-requête SQL.
Voici tout d’abord la requête en question :

UPDATE anciens SET anciens.nomclient = (SELECT [clients].[nomclient] FROM [clients] WHERE [clients].[codeclient]=[anciens].[codeclient]) WHERE EXISTS (SELECT [clients].[nomclient] FROM [clients] WHERE [clients].[codeclient]=[anciens].[codeclient]);

J’ai donc 2 tables :
[ul][li]une table “anciens” qui contient 2 colonnes : “nomclient” et “codeclient”[/li]
[li]une table “clients” qui contient 2 colonnes : “nomclient” et “codeclient”[/li][/ul]

Le but de la requête est de mettre à jour la table “anciens” de façon à ce que le champ “nomclient” de la table “anciens” corresponde au “nomclient” de la table “clients”.

Or, lorsque j’exécute la requête en question sous Access (désolé, je suis au boulot…), j’obtiens l’erreur suivante :

Mais si je modifie la requête en question de la façon suivante, tous les champs sont correctement mis à jour avec la valeur “azerty123” que j’ai mis pour tester, je n’ai aucune erreur :

UPDATE anciens SET anciens.nomclient = "azerty123" WHERE EXISTS (SELECT [clients].[nomclient] FROM [clients] WHERE [clients].[codeclient]=[anciens].[codeclient]);

J’en déduis donc que le problème vient de la sous-requête à la ligne “SET”.

A noter que tous les champs sont de type Texte.

Est-ce que quelqu’un saurait m’aider ? A priori ce n’est pas quelque chose de très complexe mais je n’arrive pas à voir ce qui cloche, d’autant plus que c’est le même code que sur cette page (cf. exemple 2) : techonthenet.com/sql/update.php

Merci à vous !

Cluxter

Essaye en remplaçant :

WHERE [clients].[codeclient]=[anciens].[codeclient]

Par

WHERE [clients].[codeclient] LIKE [anciens].[codeclient]

Merci pour ta réponse. Malheureusement, ça ne fonctionne pas mieux.

Je suis passé par l’interface graphique d’Access et j’ai réussi à mettre au point une requête qui fait ce que je veux.
Voici le code généré par le logiciel :

Je ne comprends pas encore très bien la syntaxe de ce code donc je vais bosser dessus pour mieux comprendre. Cependant je reste sur ma faim car la requête que j’utilisais au début aurait dû fonctionner a priori. Je me demande s’il ne s’agit pas d’un problème de respect de standards ou quelque chose comme ça.

INNER JOIN fait une jointure avec des priorité plus forte! :slightly_smiling:
C4-SIO3 - Jointure et Multi Table.pdf (276 KB)

Un déterrage de post comme on en voit rarement :laughing: Mais merci tout de même pour l’info ! En effet je vais être amené à utiliser le SQL à nouveau d’ici très peu de temps donc il est probable que je me retrouve à nouveau confronté à ce genre de problèmes. Et c’est toujours bon pour la communauté :023