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 Tue 24 May 2022 17:21

kili888
Participant actif
Date d'inscription: 4 May 2020
Messages: 93

[postgresql/postgis]

Bonjour je cherche désespérément à trouver la bonne syntaxe pour mettre à jour dans mes différentes tables de ma base de données le champs INSEE.

Toutes me tables dispose d'un champs INSEE, cependant non remplis actuellement. Je dispose d'une table "commune" avec les codes INSEE correspondant.

Je souhaite donc avoir la syntaxe exacte pour créer ma requête pour mettre à jour mes tables, en faisant donc une jointure spatiale pour avoir pour chaque table le bon code INSEE correspondant.


Par avance merci.

Hors ligne

 

#2 Wed 25 May 2022 08:06

Franck2908
Participant actif
Date d'inscription: 5 Mar 2010
Messages: 85

Re: [postgresql/postgis]

Bonjour,

pourriez-vous donner un aperçu de votre modèle de données, sans aucun nom de tables, ni d'attributs c'est difficile de vous répondre

Hors ligne

 

#3 Wed 25 May 2022 09:46

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: [postgresql/postgis]

Bonjour.
Sans connaître le modèle de données et en partant du principe que toutes les tables ont une géométrie de type polygone:

Code:

update tableA set insee = commune.insee from commune where st_within(st_pointonsurface(tableA.geom), commune.geom)

Si la tableA est de type ponctuelle alors on remplace st_within(st_pointonsurface(tableA.geom), commune.geom) par st_within(tableA.geom, commune.geom)

Cordialement
JP

Hors ligne

 

#4 Wed 25 May 2022 16:21

kili888
Participant actif
Date d'inscription: 4 May 2020
Messages: 93

Re: [postgresql/postgis]

JP LLORENS a écrit:

Bonjour.
Sans connaître le modèle de données et en partant du principe que toutes les tables ont une géométrie de type polygone:

Code:

update tableA set insee = commune.insee from commune where st_within(st_pointonsurface(tableA.geom), commune.geom)

Si la tableA est de type ponctuelle alors on remplace st_within(st_pointonsurface(tableA.geom), commune.geom) par st_within(tableA.geom, commune.geom)

Cordialement
JP


Ma table est dans schéma pci et s'appelle geo_commune

Hors ligne

 

#5 Mon 30 May 2022 10:05

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 995

Re: [postgresql/postgis]

Ma table est dans schéma pci et s'appelle geo_commune


Il va falloir faire l'effort d'adapter la requête avec vos noms de tables et champs wink
Et vous donnez l'emplacement de la table des communes, mais pas de la table à mettre à jour (je mets comme ceci : "schema.table_a_mettre_a_jour")

Voici quand même une proposition, avec des retours à la ligne que je trouve plus lisibles :

Code:

UPDATE schema.table_a_mettre_a_jour AS t
SET insee = c.insee
FROM pci.geo_commune AS c
WHERE st_within(st_pointonsurface(t.geom), c.geom)

Dernière modification par Sylvain M. (Mon 30 May 2022 10:07)


Sylvain M.

Hors ligne

 

#6 Wed 08 June 2022 14:51

kili888
Participant actif
Date d'inscription: 4 May 2020
Messages: 93

Re: [postgresql/postgis]

J'ai un problème avec les alias

ERROR:  column t.geom does not exist
LINE 4: WHERE st_within(st_pointonsurface(t.geom), c.geom)
                                          ^
État SQL : 42703
Caractère : 133

Ma requête utilisée est la suivante: Je pense que je bloque sur un truc ultra basique mes cours et uitilisation de requete plus complexe comme cela sur POSTGIS commence à dater et quand ont ne pratique pas régulièrement c'est comme tout

UPDATE assainissement_test.geo_test_ecoulement as t
SET insee = c.insee
FROM pci.geo_commune as c
WHERE st_within(st_pointonsurface(t.geom), c.geom)

Hors ligne

 

#7 Wed 08 June 2022 15:01

kili888
Participant actif
Date d'inscription: 4 May 2020
Messages: 93

Re: [postgresql/postgis]

Refectification

Je ne me trompais pas c'est simplement que la colonne ne s'appelait pas geom mais the_geom

Hors ligne

 

#8 Wed 08 June 2022 15:11

kili888
Participant actif
Date d'inscription: 4 May 2020
Messages: 93

Re: [postgresql/postgis]

Sylvain M. a écrit:

Ma table est dans schéma pci et s'appelle geo_commune


Il va falloir faire l'effort d'adapter la requête avec vos noms de tables et champs wink
Et vous donnez l'emplacement de la table des communes, mais pas de la table à mettre à jour (je mets comme ceci : "schema.table_a_mettre_a_jour")

Voici quand même une proposition, avec des retours à la ligne que je trouve plus lisibles :

Code:

UPDATE schema.table_a_mettre_a_jour AS t
SET insee = c.insee
FROM pci.geo_commune AS c
WHERE st_within(st_pointonsurface(t.geom), c.geom)


Merci de votre réponse tout est résolu j'ai pu obtenir ce qu'il me faut

Hors ligne

 

Pied de page des forums

Powered by FluxBB