Bonjour,

Alors je fais un appel à Laurent Schneider, qui me suis aimablement depuis quelques temps. Mais si quelqu'un à une idée, elle est la bienvenue.

J'ai une requête SQL qui me retourne les relations qui lient des objets.

Plus clairement j'ai des bordereaux qui sont liés par des lignes de compte.
Mais cela peut faire B1->L1->L2->B2->L3->L4->B3
Ce qui donne que le bordereau B1 et lié à B2 et B3.

La requête

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
select
lc.ID ligneDeCompteLettree, BOR.ID Bordereau, BOR.ETATOBJET,
from TBORDEREAUOPERATIONFINANCIERE bor, 
	   TDECAISSEMENT enc,  
	   TAFFECTATIONOPERATION aff,
	   TLIGNEDECOMPTE lc
where  mod(bor.etatobjet, 2)=0
and bor.id=enc.BORDEREAU_ID and mod(enc.etatobjet, 2)=0
and aff.OPERATION_ID=enc.ID and mod(aff.etatobjet, 2)=0
and (lc.GENERATEUR_ID=aff.id or aff.LIGNECOMPTELETTREE_ID=lc.id)
and lc.LIGNEDECOMPTE_ID is null
and mod(lc.etatobjet, 2)=0
Ma requête me retourne :

LigneDeCompte - Bordereau - EtatBordereau
L1 - B1 - 2
L2 - B1 - 2
L2 - B2 - 2
L3 - B2 - 2
L3 - B3 - 0

Il faut que je détermine des ensembles de bordereaux, et il faut que l'ensemble des bordereaux ait l'étatobjet à 2.

J'essaie d'utiliser les fonctions analytiques que je maitrise mieux, par ailleurs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
min (BOR.ETATOBJET) over (partition by lc.ID) mini, 
max (BOR.ETATOBJET) over (partition by lc.ID) maxi,
min (BOR.ETATOBJET) over (partition by BOR.ID) miniBOR, 
max (BOR.ETATOBJET) over (partition by BOR.ID) maxiBOR,
count(*) over(partition by lc.ID order by lc.ID) CNT
Mais le problème, je n'arrive pas à déterminer d'ensemble car c'est recursif, une ligne de compte peut me ramener plusieurs bordereaux et un bordereau peut me ramener plusieurs ligne de compte.

Avez vous une idée ?

Merci.
Boutss