Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mise a jour d une table

12 réponses
Avatar
jacques
bonjour, je voudrais connaitre l'instruction SQL qui permet de mettre à jour
les données du champ "nom" d'un table X avec les données du champ "nom"
d'une table Y lorsque dans ces deux tables les données du champ "prénom"
sont identiques.
J espère que j'ai été assez clair ?
Merci d'avance

10 réponses

1 2
Avatar
Eric
"jacques" écrivait
news:c6uflm$9cp$:

bonjour, je voudrais connaitre l'instruction SQL qui permet de mettre
à jour les données du champ "nom" d'un table X avec les données du
champ "nom" d'une table Y lorsque dans ces deux tables les données du
champ "prénom" sont identiques.
J espère que j'ai été assez clair ?
Merci d'avance





Bonsoir Jacques,

Ton opération me parait très dangereuse car plusieurs personnes peuvent
avoir le même prénom mais pas le même nom(l'inverse est tout aussi vrai) et
le code sql ne pourra pas reconnaitre ca. Donc tu risques d'avoir une
floppée d'Arthur ayant même nom alors qu'il ne s'agit pas des mêmes
patronymes.

Toutefois, pour que tu ne crois pas que je te donne une non-réponse, mais
ai-je bien raison, voila le code:

Update tableX.Nom set tableX.nom=tableY.nom where
tableX.prenom=tableY.prenom;

Je me doute qu'il doit y avoir un autre motif à ta demande, du moins je
l'espère.

Eric

Avatar
Eric
re, modifies comme suit :

Update tableX.Nom set tableX.nom=tableY.nom where
tableX.prenom=tableY.prenom AND tableX.Nom Is Null;

sinon grabuge pour les enregistrements où le nom est déja renseigné et le
prénom comme ceux qui n'ont pas de nom.


Eric


Avatar
jacques
merci Eric pour ta réponse effectivement dans ma question j'ai pris un
exemple en fait je veux mettre le champ "nom" d un annuaire à jour, par le
biais d'une autre table en comparant les champs "numero".
je viens d'essayer l'instruction SQL que tu viens de me fournir mais
access me dit que la base n'existe pas. En fait il cherche la bas X.mdb et
confond le nom de la table que je veux mettre à jour avec le nom de la base
de données ?

Là je ne comprends pas !

Merci encore de m'aider

Jacques

"Eric" a écrit dans le message de
news:
"jacques" écrivait
news:c6uflm$9cp$:

bonjour, je voudrais connaitre l'instruction SQL qui permet de mettre
à jour les données du champ "nom" d'un table X avec les données du
champ "nom" d'une table Y lorsque dans ces deux tables les données du
champ "prénom" sont identiques.
J espère que j'ai été assez clair ?
Merci d'avance





Bonsoir Jacques,

Ton opération me parait très dangereuse car plusieurs personnes peuvent
avoir le même prénom mais pas le même nom(l'inverse est tout aussi vrai)
et

le code sql ne pourra pas reconnaitre ca. Donc tu risques d'avoir une
floppée d'Arthur ayant même nom alors qu'il ne s'agit pas des mêmes
patronymes.

Toutefois, pour que tu ne crois pas que je te donne une non-réponse, mais
ai-je bien raison, voila le code:

Update tableX.Nom set tableX.nom=tableY.nom where
tableX.prenom=tableY.prenom;

Je me doute qu'il doit y avoir un autre motif à ta demande, du moins je
l'espère.

Eric



Avatar
Eric
re Jacques,

les bases et tables ont meme nom ?
Donnes moi le nom de ta base, tes tables et les champs à utiliser.
S'il y a une relation donnes la aussi.

A+
eric

"jacques" écrivait
news:c6ui2t$6eg$:

merci Eric pour ta réponse effectivement dans ma question j'ai pris un
exemple en fait je veux mettre le champ "nom" d un annuaire à jour,
par le biais d'une autre table en comparant les champs "numero".
je viens d'essayer l'instruction SQL que tu viens de me fournir mais
access me dit que la base n'existe pas. En fait il cherche la bas
X.mdb et confond le nom de la table que je veux mettre à jour avec le
nom de la base de données ?

Là je ne comprends pas !

Merci encore de m'aider



Avatar
jacques
ma base s' apelle TPH.mdb et dedans il y a deux tables une appellée ANNUAIRE
et une seconde ESSAI
ces deux tables ont la même structure :
un champ CORRESPONDANT et un champ NOM
elles ne sont pas lièes.
J'utilise donc l'instruction SQL suivante :

UPDATE ANNUAIRE SET ANNUAIRE.NOM=ESSAI.NOM WHERE
ESSAI.CORRESPONDANT=ANNUAIRE.CORRESPONDANT;

sachant que dans la table ANNUAIRE les champs noms sont vides pour
l'instant.

"Eric" a écrit dans le message de
news:
re Jacques,

les bases et tables ont meme nom ?
Donnes moi le nom de ta base, tes tables et les champs à utiliser.
S'il y a une relation donnes la aussi.

A+
eric

"jacques" écrivait
news:c6ui2t$6eg$:

merci Eric pour ta réponse effectivement dans ma question j'ai pris un
exemple en fait je veux mettre le champ "nom" d un annuaire à jour,
par le biais d'une autre table en comparant les champs "numero".
je viens d'essayer l'instruction SQL que tu viens de me fournir mais
access me dit que la base n'existe pas. En fait il cherche la bas
X.mdb et confond le nom de la table que je veux mettre à jour avec le
nom de la base de données ?

Là je ne comprends pas !

Merci encore de m'aider







Avatar
Eric
"jacques" écrivait
news:c6ukgl$pjk$:

ma base s' apelle TPH.mdb et dedans il y a deux tables une appellée
ANNUAIRE et une seconde ESSAI
ces deux tables ont la même structure :
un champ CORRESPONDANT et un champ NOM
elles ne sont pas lièes.
J'utilise donc l'instruction SQL suivante :

UPDATE ANNUAIRE SET ANNUAIRE.NOM=ESSAI.NOM WHERE
ESSAI.CORRESPONDANT=ANNUAIRE.CORRESPONDANT;

sachant que dans la table ANNUAIRE les champs noms sont vides pour
l'instant.



Les champs CORRESPONDANT dans les 2 tables sont renseignés au moins?
Tu es bien dans la base TPH ? Ou ecris tu ce code ?
et ca marche pas ?

Eric

Avatar
jacques
En ce qui concerne les champs CORRESPONDANT, ils sont renseignés.
Je suis bien dans la base TPH quant au code je le tape dans une Macro ou je
demande d'exécuter SQL.
Malgré cela, rien de se passe, les données du champ NOM de la table ESSAI ne
passe pas dans le champ NOM de la table ANNUAIRE alors qu' a titre d'exemple
j'ai place des données identiques dans les champs CORESPONDANT des deux
tables.

Merci encore pour ton aide

"Eric" a écrit dans le message de
news:
"jacques" écrivait
news:c6ukgl$pjk$:

ma base s' apelle TPH.mdb et dedans il y a deux tables une appellée
ANNUAIRE et une seconde ESSAI
ces deux tables ont la même structure :
un champ CORRESPONDANT et un champ NOM
elles ne sont pas lièes.
J'utilise donc l'instruction SQL suivante :

UPDATE ANNUAIRE SET ANNUAIRE.NOM=ESSAI.NOM WHERE
ESSAI.CORRESPONDANT=ANNUAIRE.CORRESPONDANT;

sachant que dans la table ANNUAIRE les champs noms sont vides pour
l'instant.



Les champs CORRESPONDANT dans les 2 tables sont renseignés au moins?
Tu es bien dans la base TPH ? Ou ecris tu ce code ?
et ca marche pas ?

Eric





Avatar
Eric
"jacques" écrivait
news:c6ulp3$5e1$:

En ce qui concerne les champs CORRESPONDANT, ils sont renseignés.
Je suis bien dans la base TPH quant au code je le tape dans une Macro
ou je demande d'exécuter SQL.
Malgré cela, rien de se passe, les données du champ NOM de la table
ESSAI ne passe pas dans le champ NOM de la table ANNUAIRE alors qu' a
titre d'exemple j'ai place des données identiques dans les champs
CORESPONDANT des deux tables.

Merci encore pour ton aide



re Jacques, c'est un probleme lié à Access je crois car quand je fais des
jointures entre les tables non pas par inner(left/right) join mais par des
where table1.champ1 = table2.champ1 je ne peux pas mettre à jour. Donc
remplaces ton SQL par celui-ci et ca marche:

UPDATE Annuaire INNER JOIN Essai ON Annuaire.Correspondant =
Essai.Correspondant SET Annuaire.Nom = Essai.nom;

Eric

Avatar
Raymond [mvp]
Bnjour à tous les deux.

ne jamais nommer un champ nom qui est un mot réservé access.
pour l'instant indique [nom] de partout pour lui dire que c'est un champ de
table, mais c'est trop dangereux de rester ainsi.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Eric" a écrit dans le message de
news:
"jacques" écrivait
news:c6ulp3$5e1$:

En ce qui concerne les champs CORRESPONDANT, ils sont renseignés.
Je suis bien dans la base TPH quant au code je le tape dans une Macro
ou je demande d'exécuter SQL.
Malgré cela, rien de se passe, les données du champ NOM de la table
ESSAI ne passe pas dans le champ NOM de la table ANNUAIRE alors qu' a
titre d'exemple j'ai place des données identiques dans les champs
CORESPONDANT des deux tables.

Merci encore pour ton aide



re Jacques, c'est un probleme lié à Access je crois car quand je fais des
jointures entre les tables non pas par inner(left/right) join mais par des
where table1.champ1 = table2.champ1 je ne peux pas mettre à jour. Donc
remplaces ton SQL par celui-ci et ca marche:

UPDATE Annuaire INNER JOIN Essai ON Annuaire.Correspondant > Essai.Correspondant SET Annuaire.Nom = Essai.nom;

Eric



Avatar
Eric
Bonjour Raymond,

Matinal pour un 1er mai ;-)

J'avais aussi essayé en mettant l'écriture complète du style [table1].[Nom]
mais j'avais toujours le même problème.
As tu déjà rencontré ce cas là où si tu fais la jointure basique entre 2
tables par table1.champ1=table2.champ1 alors tu ne peux pas mettre à jour
la table(quelque soit le nom réel de champ1) sous Access. A chaque fois
j'ai du utiliser la clause Inner Join et ca m'est souvent arrivé quand je
mets à jour les données d'une bd Access via ASP.

A+
Eric
1 2