Bonjour,
je dois faire des requêtes SQL sur une BDD DB2 pas du tout normalisée...youpi...
J'ai 3 tables :
FACTURE (ID_facture)
PRIX_FORFAIT (ID_facture, ID_forfait, coef_forfait, montant_forfait, ID_detail)
PRIX_DETAIL (ID_detail, prix_detail)
Très simplement je dois récupérer mes factures avec l'ID du prix, qui est dans le champ ID_forfait, sauf quand le champ coef_forfait est différent de zéro, auquel cas il faut que je récupère les lignes de PRIX_DETAIL (ID_detail donc).
Une facture peut avoir un prix forfaitaire, ou une combinaison de lignes de PRIX_DETAIL.
Ma requête SQL (encore une fois très simplifiée par rapport à ma requête réelle) :
Cette requête me fait systématiquement une jointure avec PRIX_detail même quand coef_forfait est à zéro.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select f.ID_facture, CASE WHEN pf.coef_forfait=0 then pf.ID_forfait ELSE pd.ID_detail END as ID_prix from FACTURE f inner join PRIX_FORFAIT pf on f.ID_facture = pf.ID_facture left outer join PRIX_detail pd on pf.ID_detail = pd.ID_detail
Une petite précision : je ne peux bien sûr pas intervenir sur le modèle de la BDD !
Comment fait-on ?
Partager