Besoin d'aide pour concevoir une requête UPDATE spéciale

cs_Famas54 Messages postés 59 Date d'inscription mardi 12 septembre 2006 Statut Membre Dernière intervention 21 août 2009 - 1 août 2008 à 10:23
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 1 août 2008 à 12:08
Bonjour,

Je suis en plein dans la conception d'une requête dont je n'ai pas trop idée du résultat en terme de code SQL pour le moment.

En somme, je recherche à faire une requête liée à un bouton et qui fontionnerait en relation avec deux tables,
Une table1 sur laquelle un ensemble de données sont saisies manuellement par les utilisateurs de la base, et une table2 linkée à partir d'une base "Mère" qui est mise à jour de manière journalière par d'autres utilisateurs.

Le but de ma requête est de comparer les données de table1 et table2 et de modifier les données dans table1 par rapport aux différences observables dans table2.

De manière schématique le raisonnement fonctionnerait de cette manière avec une sorte de condition:

UPDATE table1
SI table1.champx = table2.champx
Alors (la valeur ne change pas)
Sinon si table1.champx <> table2.champx
Alors (le champx de la table1 prendra la valeur que la requête aura trouvé dans le champs correspondant dans la table2)

Mon principal problème est que je vois pas comment mettre en place ce genre de structure conditionnelle avec du SQL sous Access, il y a certainement une solution, probablement plus simple que celle inspirée par mon raisonnement.

3 réponses

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
1 août 2008 à 10:50
UPDATE table1
<strike>SI table1.champx = table2.champx</strike>  pas besoin de verifier si c'est egal puisque apres tu verifies si c'est pas egal
<strike>Alors (la valeur ne change pas)
Sinon</strike> si table1.champx <> table2.champx
Alors (le champx de la table1 prendra la valeur que la requête aura trouvé dans le champs correspondant dans la table2)

sinon comme c'est du sql ta quest ion trouverais plus facilement une réponse sur SQLfr.com

bonjour chez vous!
< body>
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
1 août 2008 à 12:04
Salut,


Tu peux passer par une requete de non correspondance,
mais il y' a une chose qui cloches dans ta logique.
SI table1.champx = table2.champx
Alors (la valeur ne change pas)
ça c' est logigique, on en parle plus.
Mais
Sinon si table1.champx <> table2.champx
Alors (le champx de la table1 prendra la valeur
Sur quelle base tu établis cette différence?
A supposer
Table1   Table2
1            1
2            3
5            6
8            12


1=1 on fait rien
1<>3 , 1<>6, 1<>12
tu va modifier ce qui se rapporte à 3,6,12
2<>1, 2<>3 , 2<>6, 2<>12
tu va modifier ce qui se rapporte à 1
tu va remodifier ce qui se rapporte à 3,6,12

etc...
tu ne finiras pas de modifier ce qui a déjà été modifié.
D' après ce que j' ai compris,ta logique ne tient pas en place.




Pour ce qui est de la non correspondance, elle consiste à rechercher
les enregistrements de la table2 qui n' éxistent pas dans la table1.
Tu les sauves dans une table temporaire et tu les insères dans la table1 après.



    
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
1 août 2008 à 12:08
Pour la mise à jour, au contraire tu dois le faire
par rapport aux enregistrements dont la clé est identique.
c à dire mettre à jour Table Mère en consultant  Table Utilisateurs

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
Rejoignez-nous