Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 04/01/2013 02:43:49
- youssef
- Membre
seq pour chaque code
Bonjour à tous
j'ai un petit problème.
dans une table j'ai plusieurs lignes avec une colonne département,
et je veux ajouter un colonne code composé ( unique ) qui sera composé de la concaténation du code departement et d'une sequence.
par exemple
75-1
75-2
75-3
...
59-1
59-2
59-3
est il possible de le faire avec des sequences ( sans créer 90 sequences, 1e pour chaque département )
ou faut il faire appel à des fonctionnalités plus poussées
Merci d'avance
Hors ligne
#2 04/01/2013 10:12:39
- gleu
- Administrateur
Re : seq pour chaque code
Le plus simple est certainement la séquence. Je ne vois pas d'autres méthodes s'il s'agit de donner cette valeur sans avoir à la recalculer à partir des valeurs déjà données.
Guillaume.
Hors ligne
#3 04/01/2013 10:15:10
- youssef
- Membre
Re : seq pour chaque code
mais pour ça il faut créer plusieurs sequence ou une seule ?
y a t il une façon de le faire sous forme d'une boucle ?
Hors ligne
#4 04/01/2013 10:24:38
- gleu
- Administrateur
Re : seq pour chaque code
mais pour ça il faut créer plusieurs sequence ou une seule ?
Une par département à priori, d'après votre exemple.
y a t il une façon de le faire sous forme d'une boucle ?
Va falloir donner plus de détails pour répondre à cette question.
Guillaume.
Hors ligne
#5 04/01/2013 11:04:09
- youssef
- Membre
Re : seq pour chaque code
Une sequence par département, avec 90 departement
c'est un peu trop à saisie manuellement
pour la boucle, est ce qu'il y a possibilité de créer les séquences à partir d'une requête
un peu comme
create sequence 'seq_'||(select dep from dep) ;
Hors ligne
#6 04/01/2013 11:37:38
- rjuju
- Administrateur
Re : seq pour chaque code
Vous devez utiliser une procédure stockée pour ça (ou une fonction anonyme si vous êtes en postgres >=9.0).
Julien.
https://rjuju.github.io/
Hors ligne
#7 04/01/2013 17:32:03
- youssef
- Membre
Re : seq pour chaque code
une procédure stocké.
merci pour la réponse,
voilà, il est temps de pousser l'apprentissage et commencer à apprendre le PL/pgSQL
Hors ligne
#8 04/01/2013 20:18:18
- dverite
- Membre
Re : seq pour chaque code
En PostgreSQL moderne (>=8.4) on peut utiliser row_number() plutôt que des séquences ou du code:
select departement||'-'||row_number() over ( partition by departement) FROM ....
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
#9 07/01/2013 11:30:18
- youssef
- Membre
Re : seq pour chaque code
merci dverite
ça marche très bien, je dois consacrer plus de temps aux fonctions window pour mieux les appréhender
Hors ligne
Pages : 1