[SQL] Fusionner 2 champs de 2 tables différentes [résolu]

Fusionner 2 champs de 2 tables différentes [résolu] [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 13-07-2012 à 09:48:49    

Bonjour,
 
après moults recherches et essais, je n'arrive pas à faire quelque chose de "probablement très simple" pour un expert en SQL.
Vu que c'est loin d'être mon cas, je vous soumets ma problématique.
 
J'ai 2 tables MySQL
 
table1 et table2
 
Ma table1 est complète, avec beaucoup de champs. Elle contient entre autre, un champ PSEUDO et un champ EMAIL
 
Ma table2, issue d'un traitement extérieur, ne contient que 2 champs, PSEUDO et EMAIL
 
Quelle est la requête permettant de mettre à jour l'unique champs EMAIL de la table1 depuis les données de la table2 ? Le but étant de ne pas écraser des données déjà présentes dans la table1, mais simplement de mettre à jour avec des données manquantes.
 
D'avance merci.


Message édité par Atheus le 13-07-2012 à 14:31:01
Reply

Marsh Posté le 13-07-2012 à 09:48:49   

Reply

Marsh Posté le 13-07-2012 à 10:28:31    

Bonjour,

Code :
  1. update table1 set table1.email = (select table1.email FROM table2 where table1.pseudo = table2.pseudo) where table1.email = ''


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 13-07-2012 à 11:07:14    

Merci pour cette réponse rapide.
J'ai inséré cette requête via phpmyadmin pour l'éxecuter ... Elle s'execute bien, je n'ai pas de message d'erreur ... Mais la table1 ne se met pas à jour. En gros, ça ne fait rien.

Reply

Marsh Posté le 13-07-2012 à 12:01:19    

Et si tu fais select * from table1 where email= '' tu as des résultats ?
 
Ce que je t'ai mis c'est seulement pour les lignes où email est vide dans ta table1.  
Si tu le veux pour la table1 complète sans conditions, tu vires le dernier where …


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 13-07-2012 à 12:31:44    

Bien sûr, si je fais :
SELECT * FROM table1 WHERE email='', j'ai bien mon tableau avec les champs email vides.
 
Et la requete sans le dernier where ne donne rien non plus :

Code :
  1. 1.update table1 set table1.email = (select table1.email FROM table2 where table1.pseudo = table2.pseudo)

Reply

Marsh Posté le 13-07-2012 à 12:34:26    

Edit ... En fait, ça n'a pas rien fait, ça a supprimé toutes les infos du champ email déjà présentes (j'avais fait une copie pour test, donc pas grave) ...


Message édité par Atheus le 13-07-2012 à 12:36:05
Reply

Marsh Posté le 13-07-2012 à 13:49:19    

vave a écrit :

Bonjour,

Code :
  1. update table1 set table1.email = (select table2.email FROM table2 where table1.pseudo = table2.pseudo) where table1.email = ''



 
 [:pikitfleur:1]  
erreur de copié/collé de ma part, toutes mes confuses  :o  
 


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 13-07-2012 à 14:29:31    

Je te remercie vivement : Ca fonctionne très bien.
Et honte à moi qui n'avait pas vu "ton erreur". Merci encore !

Reply

Sujets relatifs:

Leave a Replay

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