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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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: 1024
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: 1554

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: 1024
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: 1024
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: 1024
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: 1024
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