Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[mysql] Help requete pour un débutant

2 réponses
Avatar
Alain Brillant
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 ;-)

2 réponses

Avatar
Patrick Mevzek
Le Wed, 26 Jul 2006 21:02:24 +0200, JustMe a écrit :
select m1.ligne from metro m1, metro m2 where m1station = '$depart' " and
m2.station = '$arrive' and m1.ligne = m2.ligne;



Impec, Châtelet et Gare de Lyon sont bien sur la 1 et la 14.

Bien que je ne comprenne pas (mais je vais essayer de me documenter) un grand
merci à toi.



Le principe de base d'une requete sql est la jointure.



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.

PS: Attention aux injections SQL.

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/&gt; <http://www.dotandco.com/&gt;
<http://www.dotandco.net/ressources/icann_registrars/details/index&gt;
Avatar
Alain Brillant
"Patrick Mevzek" a écrit dans le
message de news:

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.

Merci à vous deux.