Mettre à jour une table à partir d'elle-même ou autre table [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 22-01-2003 à 03:17:12
Malheureusement sans les subselect de 4.1 ca risque d'être compliqué 
Marsh Posté le 24-01-2003 à 13:56:43
| 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!   
  
 
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! 
 
 
 
 
Marsh Posté le 18-01-2003 à 13:11:54
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!!!