Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 Wed 20 December 2017 14:16

isa
Participant occasionnel
Lieu: Lille
Date d'inscription: 13 Sep 2005
Messages: 18

comment mettre à jour un attribut d'une table avec le numéro d'enreg

Bonjour,

Je cherche à mettre à jour un attribut avec le numéro d'enregistrement dans une table postgreSQL
je ne trouve pas l'équivalent $id de QGIS pour postgre
Merci pour votre aide
Isa

Hors ligne

 

#2 Wed 20 December 2017 15:13

Theos2000
Participant assidu
Date d'inscription: 15 Jun 2015
Messages: 221

Re: comment mettre à jour un attribut d'une table avec le numéro d'enreg

Ca sera la commande row_number() OVER () sur postgre

Hors ligne

 

#3 Wed 20 December 2017 15:19

isa
Participant occasionnel
Lieu: Lille
Date d'inscription: 13 Sep 2005
Messages: 18

Re: comment mettre à jour un attribut d'une table avec le numéro d'enreg

J'avais trouvé la commande mais il me mettait toujours 1 dans le champ.

J'ai fais cette requête (avec l'aide d'une collègue)  et cela me donne bien ce que je souhaitais
UPDATE ma_table   SET id =
(WITH t1 AS (SELECT ROW_NUMBER() OVER() as ident, * FROM ma_table)
SELECT t1.ident FROM t1
    WHERE t1.champ = ma_table .champ
    );


Merci

Hors ligne

 

#4 Wed 20 December 2017 16:15

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3199
Site web

Re: comment mettre à jour un attribut d'une table avec le numéro d'enreg

Bonjour,

J'avais trouvé la commande mais il me mettait toujours 1 dans le champ.


Il faut faire attention avec cette fonction car si il y a une fonction d'agrégat dans la requête il va vous renvoyer n fois le même row_number.

Il faut toujours faire une requête qui permet d'obtenir X champs, puis l'utiliser row_number() over() ou faire une requête sans agrégats (comme vous l'avez fait).
Et attention aux requêtes spatiales qui agrègent ... (st_union() ou autre).

Pour bien comprendre cette fonction je vous conseille de lire la doc postgresql sur (mot clef) "WINDOWS FUNCTION".


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#5 Wed 20 December 2017 16:59

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 427

Re: comment mettre à jour un attribut d'une table avec le numéro d'enreg

ChristopheV a écrit:

Pour bien comprendre cette fonction je vous conseille de lire la doc postgresql sur (mot clef) "WINDOWS FUNCTION".


Pour celles et ceux qui chercheraient : https://www.postgresql.org/docs/9.6/sta … indow.html

Hors ligne

 

Pied de page des forums

Powered by FluxBB