PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

fonction retournant plusieurs lignes

Technique - Langages Procéduraux (PL) | fonction retournant plusieurs lignes

Par jsubei le 02/05/2007 - 19:42

Bonjour Ă  Tous,

Mon problĂŞme est de creer une fonction retournant plusieures lignes.

je vais essayer d'$etre clair et simple.

J'ai un table contenant un grand nombre de données ainsi qu'un identifiant d'un ensemble auquel elle appartiennent

donnee[id_donnee, id_groupe, valeur_donnee]

j'ai une table décrivant des propriété de chaque groupe

groupe[id_groupe, valeur_groupe]

Jusque lĂ , c'est assez habituel.

Maintenant je souhaite pouvoir partitionner les donnees de chaque groupe en sous groupe suivant leurs valeurs.

Pour cet exemple considèrons que les valeurs sont numériques et que je souhaite pouvoir sortir pour chaque groupe : le nombre de valeur de données supérieures, inférieures et égales à la valeur de mon groupe.

donc pour chaque groupe j'ai besoin de sortir 3 lignes de résultats :
nom nombre de donnees
---------------------------------
'inf' 10
'sup' 15
'egu' 7

et au final je souhaite une fonction du genre :

Select groupe.id_groupe, groupe.valeur, ma_fonction() from groupe where groupe.valeur > 0 AND groupe.valeur < 1000;
id_groupe valeur nom nombre de donnees
----------------------------------------------------
1 140 'inf' 10
1 140 'egu' 15
1 140 'sup' 7
2 200 'inf' 4
2 200 'equ' 16
2 200 'sup' 47
3 548 'inf' 24
3 548 'egu' 6
3 548 'sup' 34
[...]

VoilĂ , je ne sais pas si je me suis fais bien comprendre ....

Ensuite je sais faire une fonction, en plpgsql par exemple, qui retourne plusieurs ligne (avec un SET OF sur un type composite) donc Ă  mĂŞme de retourner pour UN groupe les infos que je souhaite.
Mais je n'ai réussi à faire que de la forme d'utilisation :
SELECT * FROM ma_fonction_groupe(un_id_groupe)

Et je ne parviens pas à imaginer comment l'utiliser pour pouvoir passer un tableau, ou un ensemble de groupe .... ou comment creer une fonction ma_fonction() qui utiliserait ma_fonction_groupe() pour retourner le résultat souhaité ....

si vous avez des remarques et / ou des idées je vous serais très très reconnaissant !!!

Merci a+!

© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.