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