Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/08/2008, 09h38   #1
Membre à l'essai
 
Inscription : août 2002
Messages : 255
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 255
Points : 21
Points : 21
Envoyer un message via AIM à the java lover Envoyer un message via MSN à the java lover
Par défaut GROUP BY : Fonction d'aggrégat

Bonjour,

Soit le résultat suivant d'une requête:

A | B

A | TOTO
B | TATA
B | TITI
C | TUTU
D | TETE


Je souhaite pouvoir renvoyer les données suivantes

A | B

A | TOTO
B | TATA/TITI
C | TUTU
D | TETE

Donc, faire un group by COL A et concaténer les données de la colonne B.

Des idées ?

Merci
__________________
"Patience et longueur de temps font plus que force ni que rage ..."
the java lover est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2008, 11h06   #2
Membre confirmé
 
Homme
Inscription : janvier 2006
Messages : 227
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations forums :
Inscription : janvier 2006
Messages : 227
Points : 239
Points : 239
bonjour,
tout d'abord je creerai une fonction d'aggregation:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE OR REPLACE FUNCTION aggr(text)returns text AS 
$body$
 
declare rep text;
declare rept text;
begin 
rept='';
FOR rep IN SELECT b FROM ma_table WHERE a=$1
	loop
	rept=rept||'/'||rep;
	end loop;
RETURN trim(LEADING '/' FROM rept);
end;
$body$
LANGUAGE 'plpgsql';
puis la requete
Code :
SELECT a, aggr(a) FROM ma_table GROUP BY a
xavier-Pierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2008, 11h25   #3
Membre à l'essai
 
Inscription : août 2002
Messages : 255
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 255
Points : 21
Points : 21
Envoyer un message via AIM à the java lover Envoyer un message via MSN à the java lover
Je vais tester ça...

N'existe-t-il pas une fonction standard permettant de le faire ?
__________________
"Patience et longueur de temps font plus que force ni que rage ..."
the java lover est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2008, 16h51   #4
Membre à l'essai
 
Inscription : août 2002
Messages : 255
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 255
Points : 21
Points : 21
Envoyer un message via AIM à the java lover Envoyer un message via MSN à the java lover
Ta solution fonctionne bien,

Merci
__________________
"Patience et longueur de temps font plus que force ni que rage ..."
the java lover est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2008, 17h33   #5
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
Citation:
Envoyé par the java lover Voir le message
Je vais tester ça...

N'existe-t-il pas une fonction standard permettant de le faire ?
Pas en Postgresql, en tous les cas aucune fonction standard SQL n'existe pour faire cela.
Après, certains éditeurs de bases de données proposent quand-même une fonction spécifique pour faire ce genre de choses
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h09.


 
 
 
 
Partenaires

Hébergement Web