Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2006, 13h19   #1
Invité de passage
 
Inscription : octobre 2002
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 7
Points : 3
Points : 3
Par défaut [SGBD/JDBC] [JAVA/MS ACCESS] problème résultat requête

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 :
Code :
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
Code :
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
mouuaahh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 16h22   #2
Invité de passage
 
Inscription : octobre 2002
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 7
Points : 3
Points : 3
Par défaut Suite de mes recherches

Je me demande si c'est pas la commande DISTINCT qui est ignorée

...... une idée ?

Merci

Mouah
mouuaahh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 16h35   #3
Invité de passage
 
Inscription : octobre 2002
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 7
Points : 3
Points : 3
Par défaut vérification faîte

je viens de modifier le code pour vérifier si le problème provenait bien du fait du
Code :
 ... FROM saisies,periodes,lp
pour obtenir une requête du genre :
Code :
 SELECT DISTINCT jour FROM saisies WHERE lp IN (....) AND periodes IN (...) ...
le résultat me donne toujours 352 enregistrements au lieu de 4 comme sous SQL ou sous Access, j'en déduis que le problème vient de distinct
Est-ce que quelqu'un a une idée ... voire la solution

Merci

Mouah
mouuaahh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 10h31   #4
Invité de passage
 
Inscription : octobre 2002
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 7
Points : 3
Points : 3
Par défaut La solution

Bonjour à toutes et à tous,

Si quelqu'un rencontre le même problème (ou similaire), voici la réponse :
Code :
 SELECT DISTINCT XX FROM (SELECT DISTINCT XX FROM T,Y WHERE ...)
@+

Mouah
mouuaahh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h41.


 
 
 
 
Partenaires

Hébergement Web