Probleme de AND , =

Résolu
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 8 juil. 2006 à 16:01
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 8 juil. 2006 à 16:55
bonjour a tous
voila m'etant mis un peu a la programmation de base de donnees en java j'ai commence le sql

j'ai trois table
le point commun de c'est table ets un meme champ id

et je voulais savoir pourquoi cette requete renvoi en double les resultat :
mysql> select visiteur.id,visiteur.ip,visite.date,infos.referer,infos.mot from visiteur,visite,infos where visiteur.id=1 and visite.id=1 and infos.id=1;
+----+-------------+---------------------+--------------------------------------
------------------+---------------+
| id | ip          | date                                     | referer                                                                             | mot           |
+----+-------------+---------------------+--------------------------------------
------------------+---------------+
|  1 | 164.34.76.1 | 2006-07-08 15:37:53 | http://localhost:8080/stat/test.jsp?q=quoi%20de%20neuf | quoi;de;neuf; |
|  1 | 164.34.76.1 | 2006-07-08 15:38:12 | http://localhost:8080/stat/test.jsp?q=quoi%20de%20neuf | quoi;de;neuf; |
|  1 | 164.34.76.1 | 2006-07-08 15:37:53 | http://localhost:8080/stat/test.jsp?q=java%20mysql     | java;mysql;   |
|  1 | 164.34.76.1 | 2006-07-08 15:38:12 | http://localhost:8080/stat/test.jsp?q=java%20mysql     | java;mysql;   |
+----+-------------+---------------------+--------------------------------------
------------------+---------------+
4 rows in set (0.00 sec)
j'ai essayer de remplcer visiteur.id=1 and visite.id=1 and infos.id=1 par visiteur.id = visite.id = infos.id =1

mais ca n'as rien change

voila merci d'avance
++
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"

5 réponses

cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
8 juil. 2006 à 16:24
Le Problème Vient sans dante que tu ne passe pas par une jointure:

Une jointure est un mécanisme qui permet de faire correspondre
entre elle plusieurs table, par défaut les table ont une jointure
de type CROSSJOIN : Toutes les ligne de chaque table sont associé
a toutes les lignes des autres Tables.

Exemple :
Les tables
Tbl1:ID,DATA_A;
Tbl2 ID,FID,DATA_B;
Les Données :
   Tbl1
      ID         DATA_A
      1            10
      2            20
   Tbl2
      FID        DATA_B
      1            15
      2            25

Requette :
   SELECT Tbl1.ID,Tbl2.FID FROM Tbl1, Tbl2
OU
   SELECT Tbl1.ID,Tbl2.FID FROM Tbl1 CROSSJOIN Tbl2
Resultat :
   Tbl1.ID      Tbl2.FID
      1            1
      1            2
      2            1
      2            2

Les Jointures INNER JOIN: Ellse permette de faire correspondre
les lignes selon certains critères:

Requette :
   SELECT Tbl1.ID,Tbl2.FID FROM Tbl1 INNER JOIN Tbl2 ON Tbl1.ID=Tbl2.FID
Resultat :
   Tbl1.ID      Tbl2.FID
      1            1
      2            1
Voilà qui resemble a ce que tu veux

Il manque maintenant une condition :

Requette :
   SELECT Tbl1.ID,Tbl2.FID FROM Tbl1 INNER JOIN Tbl2 ON Tbl1.ID=Tbl2.FID WHERE Tbl1.ID=1
Resultat :
   Tbl1.ID      Tbl2.FID
      1            1

Appliquer a ta requette voilà ce que ca donnerai:
Requette :
   select
      visiteur.id,
      visiteur.ip,
      visite.date,
      infos.referer,
      infos.mot
   from
      visiteur
      INNER JOIN visite
         ON visiteur.id=visite.id
      INNER JOIN infos
         ON visiteur.id=infos.id
   WHERE
      visiteur.id=1;
3
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
8 juil. 2006 à 16:34
PS :

Les Jointures sont une des fonctionnaliter les plus importante de SQL
si tu veut avancer dans le dévelopement de base de donnée il est important
que tu recherche de la documentton sur cet aspect du sql (CROSSJoiN et INNER JOIN
ne sont pas les seules type de jointure) Va voir sur MSDN (mais attention
certaine parti sont spécifique a SQL Server), je ne connait pas de ressource
sur MySQL mais je suis sur qu'il en existe( si quelqu'un en connai ...).

bon courrage @+.
3
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
8 juil. 2006 à 16:26
woaw ca c'est de la reponse clair et instructive :o
merci beaucoup je teste de suite !!

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
8 juil. 2006 à 16:40
merci pour vos reponse
mais je viens de comprendre pourquoi j'ai les resultat en double !!!
il faut que je fasse le lien avec l'heure aussi (date)

merci bcp

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
8 juil. 2006 à 16:55
voila
apres quelques alter
quelque bug
voici a quoi ressemble la requete

String query =

"SELECT visiteur.id,visiteur.ip,visite.date,infos.referer,infos.mot "+

"FROM visiteur "+

"INNER JOIN visite "+

"ON visiteur.id = visite.id "+

"INNER JOIN infos "+

"ON visite.date = infos.date "+

"WHERE visiteur.id = "+ id;

merci encore a tous

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Rejoignez-nous