Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2970 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Mettre à jour une table à partir d'elle-même ou autre table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Mettre à jour une table à partir d'elle-même ou autre table

n°288876
toroth2
Astronomie & HFR foot :-)
Posté le 18-01-2003 à 13:11:54  profilanswer
 

Bonjour
 
MySQL version 3.23.47
 
 
J'insère actuellement des données d'une table TO_CLUSTERS1 dans une table TV_PHYS.
 
Je ne sélectionne que certaines colonnes de la table TO_CLUSTERS1.
 
Pour tous les objets de TO_CLUSTERS1 absents de TV_PHYS, un simple insert dans TV_PHYS suffit.
 
 
Mais je veux mettre à jour les lignes dans TV_PHYS pour les objets existants (clé primaire : CD_NOM),  
avec comme condition que l'on ne met à jour un champ que s'il n'est pas encore renseigné.
 
update ne semble pas permettre de mettre à jour une ligne par rapport à une autre ligne de la même table :
(en se basant par exemple sur un CD_NOM source qui est la concaténation d'un "$" et du CD_NOM cible).
 
update ne permet pas une mise à jour depuis une autre table, semble t'il.
 
La commande replace veut mettre à jour tous les champs, mais je ne veux qu'une mise à jour des champs vides!!
 
 
Bref, je ne sais plus quoi faire!
 
Une idée?
 
 


---------------
Je me disais justement ce matin qu'il me manquait quelque chose pour descendre les poubelles!!!
mood
Publicité
Posté le 18-01-2003 à 13:11:54  profilanswer
 

n°291509
joce
Architecte / Développeur principal
"BugHunter"
Posté le 22-01-2003 à 03:17:12  profilanswer
 

Malheureusement sans les subselect de 4.1 ca risque d'être compliqué :/

n°293308
toroth2
Astronomie & HFR foot :-)
Posté le 24-01-2003 à 13:56:43  profilanswer
 

joce a écrit :

Malheureusement sans les subselect de 4.1 ca risque d'être compliqué :/


 
J'ai droit à des égards princiers ! Le grand gourou du forum en personne!  :jap:  
 
Sinon, j'ai trouvé comment faire, mais n'ai pas posté car j'en avais marre de me répondre à moi même ici! J'ai la mauvaise habitude de poser des "colles"!
 
Ce que j'ai fait :
 
Insert dans une table temporaire à partir de ma table à mettre à jour.
 
Dans l'insert j'ai utilisé des IFNULL ou des IF pour prendre la valeur de ma table source tampon ou de ma table cible valeur suivant que cette dernière a tel champ non NULL.
 
Puis j'ai fait un REPLACE INTO table cible select * from table source.
 
enfin j'ai fait un insert classique pour les lignes de la source  absentes de la table cible!
 
 
Galère quand on vient d'Oracle, mais maintenant ça marche:
 
 
Si ça intéresse quelqu'un je peux poster le fichier sql + structure tables!
 
 
 
 


---------------
Je me disais justement ce matin qu'il me manquait quelque chose pour descendre les poubelles!!!
n°293329
joce
Architecte / Développeur principal
"BugHunter"
Posté le 24-01-2003 à 14:23:00  profilanswer
 

sinon fyi avec 4.1 t'as la syntax ON DUPLICATE KEY SET


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Mettre à jour une table à partir d'elle-même ou autre table

 

Sujets relatifs
[Script buggé] Faire une mailing list avec une base MySQL[PHP/MYSQL] le max d'un varchar spossible
regénérer la doc java à partir des sources[MySQL] Question sur un Rand MySQL
Modifier une ligne sur une table MySQLComment arrêter un Process de Windows à partir de VB???
[T-SQL] Nom de colonne dynamique pour une table TEMPO !!!Cours Mysql
Comment creer un fichier .exe extractible à partir de fichiers ? 
Plus de sujets relatifs à : [MySQL] Mettre à jour une table à partir d'elle-même ou autre table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR