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 Fri 06 November 2020 16:02

BadWolf
Participant occasionnel
Date d'inscription: 27 Jun 2019
Messages: 35

fonction SQL avec un auto increment dans la requete.

Bonjour à tous

Je voudrais savoir si c'est possible de creer un auto increment dans une requête SQL (Postgres SQL)?
C'est a dire quand j'execute une requete qui me retourne 10 ligne par exemple, je voudrais ajouter un champ qui y attribut le numéro 1 pour la première ligne, le numéro 2 pour la deuxième ligne, le numéro 3 pour la troisième ligne, etc... ?
Je n'ai pas réussi a trouver dans mes recherche.

En vous remerciant

Cdlt

Bad

Hors ligne

 

#2 Fri 06 November 2020 16:09

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

Re: fonction SQL avec un auto increment dans la requete.

Bonjour, il faut créer un champ de type serial et celui-ci fera appel à une séquence qui fera en sorte d'incrémenter de 1 chaque nouvelle ligne.


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#3 Fri 06 November 2020 16:34

BadWolf
Participant occasionnel
Date d'inscription: 27 Jun 2019
Messages: 35

Re: fonction SQL avec un auto increment dans la requete.

Bonjour

Je te remercie de m'avoir répondue.
Mais je ne parle de créer un incrémentale dans une table.
Je voudrais avoir un incrémentale dans une requête SQL lorsque j'interroge la base de donnée. Pour qu'il puisse numéroter les ligne que j'ai générer.

Cdlt

Hors ligne

 

#4 Fri 06 November 2020 16:42

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

Re: fonction SQL avec un auto increment dans la requete.

Hello,

regarde du côté de la fonction sql row_number()

https://www.postgresqltutorial.com/post … ow_number/


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#5 Fri 06 November 2020 17:09

BadWolf
Participant occasionnel
Date d'inscription: 27 Jun 2019
Messages: 35

Re: fonction SQL avec un auto increment dans la requete.

bonjour

Ca marche super je te remercie.

Cdlt

Hors ligne

 

#6 Sat 07 November 2020 10:58

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: fonction SQL avec un auto increment dans la requete.

Bonjour,

Si la requête inclut une fonction retournant un ensemble (set-returning function), vous pouvez aussi utiliser la construction SQL: WITH ORDINALITY:

Code:

-- with ordinality
with tmp as (
    select '{a, b, c, d}'::text[] as arr
) select ordinality as id, u
from tmp, unnest(arr) with ordinality as u;

id    u
1    a
2    b
3    c
4    d

Nico

Hors ligne

 

#7 Mon 09 November 2020 10:29

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

Re: fonction SQL avec un auto increment dans la requete.

BadWolf a écrit:

bonjour

Ca marche super je te remercie.

Cdlt


Avec plaisir, bonne continuation.


Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com

Hors ligne

 

#8 Mon 09 November 2020 11:53

BadWolf
Participant occasionnel
Date d'inscription: 27 Jun 2019
Messages: 35

Re: fonction SQL avec un auto increment dans la requete.

Nicolas Ribot a écrit:

Bonjour,

Si la requête inclut une fonction retournant un ensemble (set-returning function), vous pouvez aussi utiliser la construction SQL: WITH ORDINALITY:

Code:

-- with ordinality
with tmp as (
    select '{a, b, c, d}'::text[] as arr
) select ordinality as id, u
from tmp, unnest(arr) with ordinality as u;

id    u
1    a
2    b
3    c
4    d

Nico


Alors oui en effet il y a ca aussi mais je ne connais pas trop encore l'histoire des fonctions dans une requête, j'ai pas eu le temps de m'y pencher, le SQL permet de faire énormément de chose, il faut juste connaitre la fonction qui correspond. On verra plus tard. Je te remercie, je vais mettre ca de coté.

Cdlt

Hors ligne

 

#9 Tue 10 November 2020 11:11

Ricola62
Participant assidu
Date d'inscription: 24 Apr 2012
Messages: 167

Re: fonction SQL avec un auto increment dans la requete.

Loic_GR a écrit:

Hello,

regarde du côté de la fonction sql row_number()

https://www.postgresqltutorial.com/post … ow_number/


Bonjour,
merci pour l'astuce.
Cependant dans mon cas je voudrais ordonnancer selon  les intersections dans un sens précis (amont -> aval)
dois je utiliser nécessairement pgrouting?

Code:

select cdeau_ppx.topooh, cdeau_aff.topooh, ST_Crosses(st_buffer(cdeau_ppx.geom, 5, 'side=right'), cdeau_aff.geom ) as r, ST_Crosses(st_buffer(cdeau_ppx.geom, 5, 'side=left'), cdeau_aff.geom ) as l,
 CASE
  when ST_Crosses(st_buffer(cdeau_ppx.geom, 50, 'side=right'), cdeau_aff.geom ) ='true' then 'droite'
  when ST_Crosses(st_buffer(cdeau_ppx.geom, 50, 'side=left'), cdeau_aff.geom ) ='true' then 'gauche'
  else 'null'
 END as rive, row_number() over (partition by cdeau_ppx.topooh order by ST_Crosses(st_buffer(cdeau_ppx.geom, 5), cdeau_aff.geom)) as rang
from pdpg.cdeau_ppx as cdeau_ppx, pdpg.cdeau_aff as cdeau_aff
where st_touches(cdeau_ppx.geom, cdeau_aff.geom) and cdeau_ppx.topooh != cdeau_aff.topooh
order by cdeau_ppx.topooh;

Hors ligne

 

#10 Tue 10 November 2020 12:52

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

Re: fonction SQL avec un auto increment dans la requete.

Bonjour,

Il vous faut regarder du côté des "windows functions" et de l'utilisation d'ORDER BY.

Ensuite regardez du côté de rank(), row_number() ...


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

Hors ligne

 

#11 Thu 12 November 2020 12:13

Ricola62
Participant assidu
Date d'inscription: 24 Apr 2012
Messages: 167

Re: fonction SQL avec un auto increment dans la requete.

ChristopheV a écrit:

Bonjour,

Il vous faut regarder du côté des "windows functions" et de l'utilisation d'ORDER BY.

Ensuite regardez du côté de rank(), row_number() ...


D'accord mais il n'y aura pas la dimension spatiale voulu? qui voudrait :
amont
cdoppal  nom_affluent   1
cdoppal  nom_affluent   2
aval

Hors ligne

 

#12 Thu 12 November 2020 13:18

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: fonction SQL avec un auto increment dans la requete.

Bonjour,

les fonctions de référencement lineaire (st_lineLocatePoint par ex) vous permettent de faire ca, en déterminant l'abscisse d'un point sur une ligne.
ca permet de classer des points du plus proche au plus lointain a partir du startpoint d'une linestring.

Nicolas

Hors ligne

 

#13 Fri 20 November 2020 12:44

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

Re: fonction SQL avec un auto increment dans la requete.

Bonjour,

@Nicolas Là on rentre dans le dur ... wink


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

Hors ligne

 

#14 Mon 23 November 2020 08:28

sylvainSIG
Participant assidu
Lieu: Moissac
Date d'inscription: 29 Nov 2018
Messages: 265

Re: fonction SQL avec un auto increment dans la requete.

Bonjour,

Si par hasard tu te retrouves avec une séquence qui ne commence pas par 1, tu peux réinitialiser ton autoincrément avec :

Code:

ALTER SEQUENCE ta_sequence
RESTART WITH 1

Juste au cas où,

Bien à toi,

Sylvain

Dernière modification par sylvainSIG (Thu 06 July 2023 14:31)

Hors ligne

 

Pied de page des forums

Powered by FluxBB