MySQL: problème avec une requête multitable - PHP - Programmation
Marsh Posté le 02-05-2004 à 02:01:44
c est possible en une seule requete.
reagrde du cote de LEFT JOIN et RIGHT JOIN...
Marsh Posté le 03-05-2004 à 08:23:26
Code :
|
Ou plus propre (au sens SQL du terme, mais identique en général pour le SGDB) :
Code :
|
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
Marsh Posté le 01-05-2004 à 22:04:18
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