Annonce
Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.
Vous allez recevoir un message pour effectuer ce changement de mot de passe.
Merci de bien respecter les règles préconisées.
#1 Mon 11 January 2016 15:17
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
[MySQL] - Update d'un champ à partir d'une autre table
Bonjour,
J’essaie de mettre à jour une table à partir d’une autre table par la requête suivante :
Code:
UPDATE ma_base.ma_table1 SET parcelle = CASE WHEN ma_base.ma_table1.rococodadr = ma_base.ma_table2.rococodadr THEN ma_base.ma_table2.parcelle ELSE NULL end;
Et j’obtiens le message d’erreur suivant :
SQL Error[1054] [42S22] Unknown column 'ma_base.ma_table.rococodadr' in 'field list'
Mais lorsque je fais
Code:
SELECT ma_base.ma_table1.rococodadr FROM ma_base.ma_table1
La requête passe.
De la même manière, j'arrive à créer une vue
Code:
CREATE VIEW ma_vue AS SELECT ma_table1.codir, ma_table1.cocom, ma_table1.cifp, ma_table1.numseqart, ma_table1.cinco, ma_table1.typart, ma_table1.cvaft, ma_table1.numimmaft, ma_table1.indrepaft, ma_table1.libvoiaft, ma_table1.basnetcom, ma_table1.basnetcoms, ma_table1.basnetico, ma_table1.basnetdep, ma_table1.basnetcotse, ma_table1.zae1, ma_table1.zae2, ma_table1.zae3, ma_table1.zae4, ma_table1.coticom, ma_table1.cotisyn, ma_table1.cotiico, ma_table1.cotitse, ma_table1.cotitsea, ma_table1.exotse, ma_table1.ttseapp, ma_table1.ttseaapp, ma_table1.totcotib, ma_table1.mprelfvl, ma_table1.mprelths, ma_table1.totcfp, ma_table1.mdegplaf, ma_table1.vlbilp, ma_table1.vlbelm, ma_table1.vliths, ma_table1.vlbeths, ma_table1.perchar, ma_table1.percharera, ma_table1.codrol, ma_table1.zae5, ma_table2.parcelle FROM ma_table1, ma_table2 WHERE ma_table1.rococodadr = ma_table2.rococodadr
mais je n'arrive pas à récupérer ma_vue.ma_table2.parcelle pour la réinjecter dans ma_table1.
Auriez-vous une idée de la provenance du problème ?
Merci d'avance pour votre aide.
Hors ligne
#2 Mon 11 January 2016 15:31
Re: [MySQL] - Update d'un champ à partir d'une autre table
Hello,
Pourquoi un CASE WHEN ?
Un truc comme ça peut-être ?
UPDATE ma_base.ma_table1
INNER JOIN ma_table2
ON ma_table1.rococodadr = ma_table2.rococodadr
SET parcelle = ma_table2.parcelle
-- si besoin de conditions
WHERE
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#3 Mon 11 January 2016 15:43
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
Re: [MySQL] - Update d'un champ à partir d'une autre table
Bonjour,
Merci pour votre aide mais la requête que vous proposez s’exécute mais semble ne pas aboutir (plus de 2 minutes et toujours rien).
J'ai également essayé la requête :
Code:
UPDATE ma_base.ma_table1 SET parcelle = ma_base.ma_table2.parcelle WHERE ma_base.ma_table1.rococodadr = ma_base.ma_table2.rococodadr
Mais j'obtiens toujours le même message d'erreur
Hors ligne
#4 Mon 11 January 2016 16:03
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1538
Re: [MySQL] - Update d'un champ à partir d'une autre table
Bonjour,
La syntaxe d'update est:
UPDATE table set champ = valeur
FROM autretable
WHERE conditions
Ici:
Code:
UPDATE ma_table1 t1 SET parcelle = t2.parcelle FROM ma_table2 t2 WHERE t1.rococodadr = t2.rococodadr;
Nicolas
Hors ligne
#5 Mon 11 January 2016 16:33
Re: [MySQL] - Update d'un champ à partir d'une autre table
Il me semblait qu'on ne faisait plus de jointures via le WHERE
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#6 Mon 11 January 2016 16:48
Re: [MySQL] - Update d'un champ à partir d'une autre table
Bonjour,
Merci pour votre aide mais la requête que vous proposez s’exécute mais semble ne pas aboutir (plus de 2 minutes et toujours rien).
J'ai également essayé la requête :Code:
UPDATE ma_base.ma_table1 SET parcelle = ma_base.ma_table2.parcelle WHERE ma_base.ma_table1.rococodadr = ma_base.ma_table2.rococodadrMais j'obtiens toujours le même message d'erreur
Il faut laisser le temps à la requête de terminer. Il y a combien de lignes ?
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#7 Mon 11 January 2016 17:18
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
Re: [MySQL] - Update d'un champ à partir d'une autre table
J'arrive à quelque chose avec
Code:
UPDATE ma_table1 SET ma_table1.parcelle=(SELECT parcelle FROM ma_table2 WHERE ma_table1.rococodadr = ma_table2.rococodadr);
Il me reste à apporter une correction sur ma_table2 où j'ai constaté qu'un rococodadr renvoie à plusieurs parcelles alors que ce cas ne devrait pas se présenter.
J'ai 31 000 enregistrements environ et au bout de 5 minutes je n'ai toujours rien avec la requête utilisant le join
Quand j'utilise la requête UPDATE ... SET... FROM... j'ai un message d'erreur sur le FROM (SQL error 1064 [42000]
Hors ligne
#8 Tue 12 January 2016 14:24
Re: [MySQL] - Update d'un champ à partir d'une autre table
Salut, essaye de laisse tourner un peu plus longtemps
Code:
UPDATE ma_base.ma_table1 INNER JOIN ma_table2 ON ma_table1.rococodadr = ma_table2.rococodadr SET parcelle = ma_table2.parcelle
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#9 Wed 13 January 2016 09:07
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
Re: [MySQL] - Update d'un champ à partir d'une autre table
Bonjour,
Cette requête a fonctionné en un peu plus de 15 minutes. L'autre que j'ai noté était plus rapide et j'ai obtenu les mêmes résultats.
Merci pour votre aide.
Hors ligne
#10 Wed 13 January 2016 10:11
Re: [MySQL] - Update d'un champ à partir d'une autre table
Avec un index je pense que cela aurait été plus rapide
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne