#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
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
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
Re: fonction SQL avec un auto increment dans la requete.
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.
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 dNico
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.
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.
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 ...
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