Bonjour,

j'ai un problème de groupage de donnée un peut particulier.

vu la complexité de ma problématique métier, j'ai préféré vous donner un exemple (peut être un peut stupide) mais beaucoup plus simple à expliquer (et sans doute à comprendre)

Question : comment grouper les personnes ayant des freres de même age et de même couleur de cheveux. une personne pouvant avoir plusieurs freres.

j'ai 2 tables PERSONNE et FRERE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
PERSONNE:
PER_ID  Nom
1       Pierre
2       Paul
3       Jacques
 
FRERE:
PER_ID  Age    Cheveux
1       12     Blond
1       15     Brun
2       12     Blond
2       15     Brun
3       12     Chatain
3       17     Brun
j'aimerais editer un état Crystal Report ou les valeurs de FRERE sont groupé sur les PERSONNES ayant des valeurs de FRERE identiques

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Pierre, Paul
-> Age    Cheveux
-> 12     Blond
-> 15     Brun
 
Jacques
-> Age    Cheveux
-> 12     Chatain
-> 17     Brun
ici l'important est que PIERRE et PAUL soient identifié comme des PERSONNE ayant les mêmes valeurs de FRERE.
La complexité viens du fait toutes les lignes de FRERE doivent être identiques (en valeur et en nombre) pour PIERRE et PAUL se qui empêche l'utilisation d'un GROUP BY standard.

l'idéal serais une requette permetant de générer le résultat suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
ID Nom       id_goupe Age       cheveux
1  PIERRE    GROUP1   12        Blond
1  PIERRE    GROUP1   15        Brun
2  PAUL      GROUP1   12        Blond
2  PAUL      GROUP1   15        Brun
3  JACQUES   GROUP2   12        Chatain
3  JACQUES   GROUP2   17        Brun
De sorte que je puisse alors faire un group by simple sur id_groupe...

j'ai deux pistes:
- la division euclidienne SQL... un collègue me dit de chercher par la. mais je m'y perd.
- définir une fonction d'agrégation spéciale qui calcule une clé unique sur FRERE à partir de plusieurs lignes... et d'utiliser cette clé comme id_groupe... mais la encore j'ai du mal a déterminer la fonction d'agrégation qui va bien.

des idées...

merci,

Patrice.