Bonjour à tous,
aujourd'hui je me décide à poster une question sur un problème que j'ai toujours contourné par programmation ne sachant pas le résoudre via une requête plus élaborée.
J'ai besoin d'établir une sorte de FLOP 10 de mes fournisseurs les plus en retard dans leurs livraisons. A cet effet, je dois interroger 2 types de transactions avec mes fournisseurs: les achats purs, et la sous-traitance.
J'ai donc 2 tables différentes, toutes 2 ayant une clé étrangère vers un fournisseur.
Voici un début de requêtage, pour l'instant ça me fait un produit cartésien des 2 tables :
Est-ce que je dois faire séparément chaque requête, mettre dans un "buffer" temporaire, trier, et récupérer le top 10 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 select achats.frn_code AS fournisseur, achats.solde AS fsolde, st.frn_code AS soustraitant, st.solde AS stsolde from (select frn_code, sum(cfl_qte_cde - cfl_qte_recue) AS solde from cfl inner join cf on cfl_cf_id = cf_id inner join frn on cf_fournisseur = frn_id where cfl_fermee = 0 and cfl_qte_recue < cfl_qte_cde AND cfl_delai_fournisseur < '20171108' group by frn_code) AS achats, (select frn_code, sum(os_qte_encours) AS solde from os inner join frn on os_fournisseur = frn_id where os_termine = 0 AND os_qte_encours > 0 AND os_echeance < '20171108' group by frn_code) AS st
Si je peux le faire direct dans une seule et même requête ce serait top...
Merci d'avance pour tout conseil.
droliprane
Partager