Le probleme c'est que vous n'essayez même pas les solutions qu'on vous donnes donc à quoi ca sert de continuer ??
Je vais tout de même expliquer cet ordre SQL :
1 2 3 4
| update client a
set a.type_client = (select b.type_client
from vs_contrimm b
where a.code_client=b.code_client) |
Que voulez vous mettre à jour ?
réponse : la colonne Type_client de la table client.
Ceci peut être fait comme grace à un update:
1 2
| UPDATE CLIENT
SET TYPE_CLIENT = 'A'; |
Cette commande va mettre un A à tout les types_client de la table client...
Jusque là c'est simple.
Mais ce c'est pas ce que vous cherchez. Vous voulez que type_client prenne la valeur de la colonne type_client de la table vs_contrimm qui a le même code_client.
Comment rechercher la valeur type_client de la table vs_contrimm pour le client ayant le code_client=1 ?
Select b.type_client from vs_contrimm where b.Code_client=1
Donc pour mettre à jour le client ayant le code 1 il faudrait faire
1 2 3
| UPDATE CLIENT A
SET TYPE_CLIENT=(Select b.type_client from vs_contrimm where b.Code_client=1)
WHERE CODE_CLIENT=1 |
L'inconvéniant c'est qu'il faut faire autant d'update qu'il y a de client.
Heureusement dans le sous-select on peut utiliser les valeurs donnés par le UPDATE avant la mise à jour de chaque enregistrement et celà devient :
1 2 3 4
| update client a
set a.type_client = (select b.type_client
from vs_contrimm b
where a.code_client=b.code_client) |
le (select b.type_client from vs_contrimm b where a.code_client=b.code_client) étant exécuté pour chaque ligne client à mettre à jour et ne doit retourner qu'une seule valeur par code_client, ce qui le cas ici.
Partager