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
Ma requête me retourne :
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
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 :
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.
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
Avez vous une idée ?
Merci.
Boutss
Partager