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!!!