synchronisation de table

synchronisation de table - SQL/NoSQL - Programmation

Marsh Posté le 03-03-2010 à 11:59:53    

bonjour,
 
je voulais savoir si il existait une methode alternative à mon problème (je programme avec php/mysql):
 
j'ai 3 tables :
 
- une sauvegarde qui contient tous les identifiants valides à un instant t (environ 40 000 entrées)
- une table HOT qui contient le détail des éléments HOT avec leur identifiant
- une table FMA qui contient le détail des éléments FMA avec leur identifiant
 
la table sauvegarde est actualisée toutes les semaines et j'aimerai effacer les identifiants de HOT et FMA qui ne se trouve plus dans sauvegarde.
 
j'ai 2 solutions mais qui ne me paraissent pas élégantes :
 
la 1ere :
recupérer tous les id de sauvegarde dans un tableau puis boucler sur la table HOT et FMA (je rappelle il y'a 40 000entrées dans sauvegarde)
si l'id n'est pas ds le tableau alors effacer l'enregistrement.
 
la 2eme :
pour chaque élément de la table de HOT et FMA je regarde si l'id existe dans sauvegarde si il n'existe pas je delete l'enregistrement dans la table concernée.
 
y'a t il une instruction en sql qui me permette de tout faire en une fois?
sinon, laquelle des 2 méthodes est la plus clean? (je vote pour la 2eme, mais ça en fait des requetes...)
 
merci!

Reply

Marsh Posté le 03-03-2010 à 11:59:53   

Reply

Marsh Posté le 03-03-2010 à 15:41:31    

SELECT * FROM HOT h LEFT JOIN sauvegarde s ON h.id = s.id WHERE h.id IS NULL


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 03-03-2010 à 16:59:22    

merci !
mais....ça marchait pas (pas d'erreur mais aucun retour)
 
j'ai essayé :
 SELECT ID FROM FMA h LEFT JOIN sauvegarde s ON h.id = s.IDCLIENT WHERE s.IDCLIENT IS NULL
ça me renvoie bien les ID qui ne sont pas ds sauvegarde.
 
me reste à trouver le pendant de cette requete pour recuperer les id qui ne sont pas dans fma mais dans sauvegarde.
ça donne :
SELECT IDCLIENT FROM sauvegarde s LEFT JOIN FMA h ON s.IDCLIENT=h.id WHERE h.id IS NULL
 
UN GRAND MERCI!


Message édité par golumest le 03-03-2010 à 17:05:54
Reply

Marsh Posté le 03-03-2010 à 19:40:57    

Ce qu'on donne doit-être adapté à ton cas, ce qui est normal puisqu'on n'a pas la structure des tables.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 03-03-2010 à 20:15:51    

non c'est pas au niveau de la structure mais de la clause WHERE ou tu avais utiliser la table "h" au lieu de "s". et je ne comprends d'ailleurs pas que ta requete ne me renvoie pas les id de h qui ne sont pas dans s.
 
mais un grand merci, ça fonctionne au bout du compte et je nepensais pas que c'etait possible de le faire avec une simple requete  sql!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed