Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1940 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  MySQL: problème avec une requête multitable

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MySQL: problème avec une requête multitable

n°713733
Big-Foot
Posté le 01-05-2004 à 22:04:18  profilanswer
 

Hello tout le monde!
Je suis confronté à un problème qui dépasse (de peu) mes capacités. Je vous explique en deux mots:
 
Mon but est de faire un moteur de recherche de trajets.
Dans mon problème, 3 tables sont concernées:
 
trajets_longs
villes
users
 
La table trajet contient 3 champs à problème: id_user ; id_ville_dep ; id_ville_arr qui sont respectivement l'ID de l'utilisateur, l'ID de la ville de départ, l'ID de la ville d'arrivée. Les correspondance ID <-> noms sont stockés dans les autres tables.
J'aimerai, en une requete, pouvoir retourner le trajet en remplaçant l'ID de l'user et des villes par leur nom.
 
Pour l'instant, tout marche presque, avec ça:
 
SELECT trajets_longs_id, trajets_longs_id_usr, trajets_longs_vil_dep, trajets_longs_vil_arr, users_nom, villes_nom
FROM trajets_longs, users, villes
WHERE (users_id = trajets_longs_id_usr) AND (villes_id = trajets_longs_vil_dep)
 
 
Là, tout marche (sauf pour ville_arrivée qui n'est pas traité)
Si j'ajoute:
 
AND (villes_id = trajets_longs_vil_arr)
 
ça marche pas. Simplement parce que l'enregistrement concerné par trajets_longs_vil_arr n'est pas le même que celui concerné par trajets_longs_vil_dep. Il faudrait donc que je fasse comme si il s'agissait de deux tables différentes.
Vous voyez ce que je veux dire?
 
Est-ce que vous avez une idée pour contourner le problème? Ou est-ce qu'il y a moyen d'aborder le tout d'une autre manière, en optimisant un max la requete? (c'est destiné à un site avec beaucoup de traffic et des grosses BDD).
 
Merci!
 
RedLeader

mood
Publicité
Posté le 01-05-2004 à 22:04:18  profilanswer
 

n°713793
docwario
Alea jacta est
Posté le 02-05-2004 à 02:01:44  profilanswer
 

c est possible en une seule requete.
reagrde du cote de LEFT JOIN et RIGHT JOIN...

n°713862
ratibus
Posté le 03-05-2004 à 08:23:26  profilanswer
 

Code :
  1. SELECT users.nom, DEP.nom, ARR.nom
  2. FROM trajets_longs, users, villes DEP, villes ARR
  3. WHERE users.id = trajets_longs.id_usr AND DEP.id = trajets_longs.id_vil_dep AND ARR.id = trajets_longs.id_vil_arr;


 
Ou plus propre (au sens SQL du terme, mais identique en général pour le SGDB) :
 

Code :
  1. SELECT users.nom, DEP.nom, ARR.nom
  2. FROM trajets_longs JOIN users ON users.id = trajets_longs.id_usr JOIN villes DEP ON DEP.id = trajets_longs.id_vil_dep JOIN villes ARR ON ARR.id = trajets_longs.id_vil_arr


 
PS : j'ai renommé les champs dans la requete, donne moi la liste des noms exacts de tes tables si tu veux que j'adapte :)


Message édité par ratibus le 03-05-2004 à 08:24:42

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  MySQL: problème avec une requête multitable

 

Sujets relatifs
probleme de creation d un compte sous sql serveru via phpprobleme pour creer des compte sql via php
Probléme mediaProblème d'utilisation de PEAR::DB
petit probleme de recursivité[mysql] Creation base et grant
probleme de declaration de variableMySQL auto-increment
Probleme d'utilisation des variables je crois (PHP + SVG)[C] problème de pointeur
Plus de sujets relatifs à : MySQL: problème avec une requête multitable


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR