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