Je suis débutant et, malgré la lecture de la documentation MySql sur les
requêtes, je ne trouve pas la solution à mon problème.
J'ai une table [metro] qui contient le nom de toutes les stations
[station] du métro Parisien et les numéros des lignes [ligne] sur
lesquelles elles se situent.
J'ai besoin en donnant une station de départ X et une station d'arrivé Y
de connaître la ou les lignes qui passent aux 2 stations, pas qui passe
à l'une ou l'autre mais qui soit commune aux 2 .
Actuellement voici comment je procède :
Avec "select ligne from metro where station = '$depart' " ;
J'obtiens les lignes qui passent à cette station de départ
Avec "select ligne from metro where station = '$arrive' " ;
Et celles qui passent à la station d'arrivée
Ensuite en PHP par 2 boucles imbriquées je vérifie les lignes qui sont
commune aux 2 stations.
Il doit bien y avoir un moyen de faire une requête en MySQL qui donne le
même résultat.
Si un féru de MYSQL (et du métro Parisien) veut bien m'aider ;-)
SELECT m1.ligne FROM metro AS m1 INNER JOIN metro AS m2 ON (m1.ligne=m2.ligne) WHERE m1.station='$depart' AND m2.station='$arrive'
Ce qui permet au passage de séparer critère de jointure et critère de restriction, subtile différence entre les deux.
Pour information, question méthodologie, une «boucle» se transforme souvent en SQL en jointure.
Tout ceci me semble fort intéressant, mais surtout va m'être très utile, voir même indispensable. Pour le moment ma requête était simple car il s'agissait simplement de savoir si 2 stations étaient sur une même ligne. Mais si les 2 stations n'ont pas une ligne en commun, il va falloir trouver si, sur les 2 lignes des 2 stations il existe 1 station de correspondance. Puis ça va se compliquer encore s'il n'y a pas de correspondance directe et trouver si une 3 eme ligne est en correspondance avec les 2 autres lignes. et ainsi de suite. En fait, juste pour le fun, j'essaye de faire ce qu'on trouve sur le site de la RATP lorsqu'on fait une demande de parcours depuis une station départ vers une station d'arrivée.
Je vais donc faire des recherches sur les jointures.
Merci à vous deux.
"Patrick Mevzek" <pm-N200607@nospam.dotandco.com> a écrit dans le
message de news: pan.2006.07.26.19.39.58.832273@nospam.dotandco.com...
Une jointure sans le mot-clef JOIN :-) ?
SELECT m1.ligne FROM metro AS m1 INNER JOIN metro AS m2 ON
(m1.ligne=m2.ligne) WHERE m1.station='$depart' AND
m2.station='$arrive'
Ce qui permet au passage de séparer critère de jointure et critère de
restriction, subtile différence entre les deux.
Pour information, question méthodologie, une «boucle» se transforme
souvent en SQL en jointure.
Tout ceci me semble fort intéressant, mais surtout va m'être très utile,
voir même indispensable. Pour le moment ma requête était simple car il
s'agissait simplement de savoir si 2 stations étaient sur une même
ligne. Mais si les 2 stations n'ont pas une ligne en commun, il va
falloir trouver si, sur les 2 lignes des 2 stations il existe 1 station
de correspondance. Puis ça va se compliquer encore s'il n'y a pas de
correspondance directe et trouver si une 3 eme ligne est en
correspondance avec les 2 autres lignes. et ainsi de suite. En fait,
juste pour le fun, j'essaye de faire ce qu'on trouve sur le site de la
RATP lorsqu'on fait une demande de parcours depuis une station départ
vers une station d'arrivée.
Je vais donc faire des recherches sur les jointures.
SELECT m1.ligne FROM metro AS m1 INNER JOIN metro AS m2 ON (m1.ligne=m2.ligne) WHERE m1.station='$depart' AND m2.station='$arrive'
Ce qui permet au passage de séparer critère de jointure et critère de restriction, subtile différence entre les deux.
Pour information, question méthodologie, une «boucle» se transforme souvent en SQL en jointure.
Tout ceci me semble fort intéressant, mais surtout va m'être très utile, voir même indispensable. Pour le moment ma requête était simple car il s'agissait simplement de savoir si 2 stations étaient sur une même ligne. Mais si les 2 stations n'ont pas une ligne en commun, il va falloir trouver si, sur les 2 lignes des 2 stations il existe 1 station de correspondance. Puis ça va se compliquer encore s'il n'y a pas de correspondance directe et trouver si une 3 eme ligne est en correspondance avec les 2 autres lignes. et ainsi de suite. En fait, juste pour le fun, j'essaye de faire ce qu'on trouve sur le site de la RATP lorsqu'on fait une demande de parcours depuis une station départ vers une station d'arrivée.
Je vais donc faire des recherches sur les jointures.