Bonjour à tous,

Je rencontre actuellement une anomalie sur le résultat d'une requête que voici :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT FACT_1.IDDevis, FACT_2.IDDevis, fact_1.fac_type, fact_2.fac_type
FROM FACture AS FACT_1 
LEFT OUTER JOIN (SELECT TOP 1 facture.iddevis, facture.fac_type FROM FACture WHERE FACture.FAC_Type = 3) AS FACT_2 ON FACT_2.IDDevis = FACT_1.IDDevis
WHERE FACT_1.IDClient = 431

La requête ci-dessus retourne 4 résultats car 4 factures.
Avec le SELECT TOP, je teste la présence d'un type de facture ayant comme dénominateur commun, l'identifiant du devis.
Pour 3 factures, le test est positif mais malheureusement, toutes les valeurs de fact_2 sont à NULL.

si je modifie la requête comme suit, tout roule :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT FACT_1.IDDevis, FACT_2.IDDevis, fact_1.fac_type, fact_2.fac_type
FROM FACture AS FACT_1 
LEFT OUTER JOIN FACture AS FACT_2 ON FACT_2.IDDevis = FACT_1.IDDevis AND FACT_2.FAC_Type = 3
WHERE FACT_1.IDClient = 431
mais le hic c'est que ça ne gère pas la possibilité qu'il y ait plus d'un résultat, et que je ne souhaite pas mettre de DISTINCT du fait de la présence de SUM dans la requête réelle.

Est-ce que quelqu'un aurait une idée ?
merci