#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]
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
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]
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
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