Bonjour tout le monde,
J'ai fait une requête qui m'affiche les lignes que je cherche mais il me reste un dernier critère de sélection, et celui-ci est plus complexe à obtenir :
Pour l'instant la requête me génère 14 lignes dont le sujet est pfo_idRattachement.
Chaque pfo_idRattachement se trouve dans la table principale tp_rti, voici l'exemple de lignes
Code :
- rti_idrattachement ; rti_DateorigineFlux ; rti_actionGlobale_init
- xxxx ; 20140701 ; 4
- xxxx ; 20140702 ; 2
- ...
|
Je voudrais que ce idRattachement ne fasse PAS partie de mes 14 résultats actuel car le dernier enregistrement (max(dateorigineFlux)) est différent de 4.
Pour l'instant j'ai fait ceci mais ça ne me semble pas bon :
Requête qui fonctionne mais ne prend pas en compte mon dernier critère de sélection :
Code :
- select * from bps_bpai.TB_OAI_PAR OAI, bps_bpai.TB_PFO PFO
- where OAI.pfo_id = PFO.pfo_id
- and oar_etat = 2
- and pfo_idrattachement in (
- select distinct(rti.rti_idrattachement) from BPS_PRV.tp_rti rti, BPS_PRV.tp_app app --, tp_sicom com --140992 cas
- where rti.app_id = app.app_id
- --and app.sic_id = com.sic_id
- and app.app_codeapplication = 'ADMINBPS'
- and rti.rti_actionglobale_init = 4
- );
|
Avec le critère en plus :
Code :
- and pfo_idrattachement not in (
- select R.rti_idrattachement
- from tp_rti R
- INNER JOIN
- (
- select rti_idrattachement, max(rti_dateorigineflux) AS DateMax FROM tp_rti where rti_actionglobale_init <> 4
- group by rti_idrattachement
- ) temp on R.rti_idrattachement = temp.rti_idrattachement
- where R.rti_dateorigineflux = temp.DateMax
- )
|
Savez-vous comment je pourrais l'implémenter et par ailleurs de façon optimisé, car ma requête prend déjà pas mal de temps.
Si vous voyez des optimisations dans ma requête actuelle je suis preneur également.
D'avance merci pour votre aide