Mise a jour d une table

Le
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
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric
Le #5374011
"jacques" 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

Eric
Le #5374001
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


jacques
Le #5373981
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" news:
"jacques" 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



Eric
Le #5373971
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" 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



jacques
Le #5373961
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" 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" 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







Eric
Le #5373951
"jacques" 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

jacques
Le #5373941
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" news:
"jacques" 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





Eric
Le #5373931
"jacques" 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

Raymond [mvp]
Le #5373921
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" news:
"jacques" 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



Eric
Le #5373901
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
Publicité
Poster une réponse
Anonyme