banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

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

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1022
Site web

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

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1022
Site web

Re: [MySQL] - Update d'un champ à partir d'une autre table

Il me semblait qu'on ne faisait plus de jointures via le WHERE smile


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

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1022
Site web

Re: [MySQL] - Update d'un champ à partir d'une autre table

white-shadow90 a écrit:

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


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

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1022
Site web

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

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1022
Site web

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

 

Pied de page des forums

Powered by FluxBB