Bonsoir,
select distinct nom from
(select i.nom
from proc_tq_ascendance(:clef,0,0,0) t
inner join individu i on i.cle_fiche=t.tq_cle_fiche
union
select i.nom
from proc_tq_ascendance(:clef,0,0,0) t
inner join individu i on t.tq_cle_fiche in (i.cle_pere,i.cle_mere)
union
select i.nom
from proc_tq_ascendance(:clef,0,0,0) t
inner join t_union u on u.union_mari=t.tq_cle_fiche
inner join individu i on i.cle_fiche=u.union_femme
union
select i.nom
from proc_tq_ascendance(:clef,0,0,0) t
inner join t_union u on u.union_femme=t.tq_cle_fiche
inner join individu i on i.cle_fiche=u.union_mari
union
select i.nom
from proc_tq_ascendance(:clef,0,0,0) t
inner join individu e on t.tq_cle_fiche in (e.cle_pere,e.cle_mere)
inner join t_union u on u.union_mari=e.cle_fiche
inner join individu i on i.cle_fiche=u.union_femme
union
select i.nom
from proc_tq_ascendance(:clef,0,0,0) t
inner join individu e on t.tq_cle_fiche in (e.cle_pere,e.cle_mere)
inner join t_union u on u.union_femme=e.cle_fiche
inner join individu i on i.cle_fiche=u.union_mari)
Remplacez ":clef" par le NIP de l'individu en tête de la branche. Le résultat comprend, les noms des ascendants (individu de départ compris), les noms de leurs conjoints, les noms de leurs enfants et les noms des conjoints de leurs enfants. Il y a donc les noms de conjoints des enfants de l'individu de départ. Il faudrait prendre les parents de ce dernier comme individu de départ pour l'éviter, et à ce moment là "doubler" la sous-requête (partie entre parenthèses après le premier "from") pour avoir une première partie avec client=son père et l'autre avec client=sa mère.
A+
André