Bonjour,
J'ai développé un programme qui permet soit de travailler sur une base SQL ou en local sur une base Access.
Les requêtes fonctionnent très bien sous SQL mais certaines donnent des résultats troublant sous Access.
Par exemple :
ResultSet query=statement.executeQuery("select distinct jour from saisies,lp,periodes where uti_num="+uti_num+" and valide=0 and periodes.periode=saisies.periode and lp.lp=saisies.lp and lp.visible=1 and periodes.visible=1 order by jour");
Cette requête retourne une liste de champs 'Jour' en fonction de 3 tables (saisies,lp,periodes).
Sous SQL j'obtiens bien mes jours escomptés (4), mais via une connexion ODBC (driver Sun) sur une base Access j'en obtiens 352 !!! (les données des tables sont identiques entre Access et SQL).
J'ai exécuté la requête directement dans Access, et j'obtiens bien le même nombre de jour (4) que sous SQL.
En cherchant, j'ai compris d'où provient ce nombre de lignes : 352. La table LP contient 22 enregistrement, la table periodes contient 4 enregistrements => 4*22=88 possibilités, comme il y a 4 jours possibles=>88*4=352.
J'en ai déduit que les liens des tables avaient été ignorés, j'ai donc refais ma requête en utilisant la fonction JOIN => même résultat => les liens sont ignorés.
J'en conclu que
select XXX from A,B,C where A.X=B.X and A.Z=C.Z
est équivalent à [code]select XXX from A,B,C[code] !!!!!????
Est-ce que quelqu'un aurait une idée car j'ai beau cherché j'ai rien trouvé.
Merci
Partager