Mysql mise à jour de tables

Fermé
jj - 18 janv. 2003 à 10:41
 Haiti - 19 janv. 2003 à 11:46
je souhaiterais mettre à jour une colonne d'une table à partir de données fournies par une autre table. Chacune de ces tables possède le même index.
Je n'arrive pas avec update faire référence à une autre table.
A voir également:

5 réponses

Tchao,

A tester mais tu peux essayer :

UPDATE New_Table T2
SET Col2 = ( SELECT Col2
FROM Old_Table T1 where T1.id=T2.id )

les T1 et T2 sont des alias comme je ne sais pas si les colonnes des deux tables ont des noms différents.
New_Table(Id,Col2) est le table à mettre à jour.
Old_Table (Id,Col2) est la table de référence.
id est l'index commun des 2 tables.
Col2 est la colonne à mettre à jour.
0
Merci pour cette proposition mais la syntaxe n'est pas acceptée.
A priori on ne peut pas faire un select dans une requête update.
0
Je pense que c'est dû à ce que Mysql est plus limité du point de vue fonctionnalitée que Oracle.Il n'accepte pas les sous requêtes.
Ca doit marcher uniquement sur Oracle.
Tu n'as qu'à essayer de faire un programme embeded sql , dans lequel tu fais un select de ta table d'origine. Ensuite dans ta boucle de fetch tu fais un update Nouvelle Table set Val = Var Origin fecht
where id = Var id Fetch.
Ca doit marcher aussi.
0
J'ai résolu mon problème en écrivant un script perl, mai je reste étonné qu'au niveau du sql de mysql il n'y a pas quelque chose de plus simple et rapide.
Tu me parles de "programme embeded sql" peux tu m'en dire un peu plus ou me donner un lien.
Merci A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tchao,

Ce que tu viens de faire c'est du Embeded sql dans un programme perl.Tu utilises une librairie qui te permet d'envoyer des commandes sql.Ce sont des requêtes sql cachées dans du code perl.
Tu peux aussi le faire en C , C++ , java etc ... .
C'est très performant lorsque tu dois faire des requêtes avec des filtres compliqués sur des tables importantes ( ~ 300 000 lignes ).
0