Voilà j'ai une requête,
et bien, via
BDE = OK
Explorateur SQL = OK
SQL*PLUS = OK
mais en ADO, le résultat est différent :
- Les Record avec CDateReceip à null sont ignorés comme si le null était plus fort que le OR avec CDateEstimate
- Les Record avec CDateReceip avec une date en dehors du filtre, idem sont ignorés, ... pour la date rentre dans le OR avec CDateEstimate
Une sorte d'optimisation des requêtes chez ADO qui foire totalement ?
Comment désactiver cette optimisation ?
voici la requête, j'ai juste mis * dans la liste de champs sinon c'est trop long
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SELECT * FROM TPAYMENT TPA INNER JOIN TCONTRAC TC on (TPA.CContractID=TC.CContractId) INNER JOIN TCOUNTRY TCO on (TC.CCountryId=TCO.CCountryId) INNER JOIN TDONOR TD on (TC.CDonorId=TD.CDonorId) INNER JOIN TCURREN TCU on (TC.CCurrencyId=TCU.CCurrencyId) WHERE TPA.CPayID > 0 AND (TC.CCountryId IN (52)) AND (((TPA.CDateReceip >= :DDateBegin) AND (TPA.CDateReceip <= :DDateEnd)) OR ((TPA.CDateEstimate >= :DDateBegin) AND (TPA.CDateEstimate <= :DDateEnd))) ORDER BY TCO.CCountryName, TD.CDonorName, TC.CContractCode
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
19
20
21 ( ( ( TPA.CDateReceip >= :DDateBegin ) AND ( TPA.CDateReceip <= :DDateEnd ) ) OR ( ( TPA.CDateEstimate >= :DDateBegin ) AND ( TPA.CDateEstimate <= :DDateEnd ) ) )
Partager