2017-05-28 13 views
0

バスルートのステーションに関する詳細を持つテーブルから行を選択しようとしています。特定の列に特定の値を持つ同じテーブル内の2つの異なる行を選択する方法

場合は、開始と終了局との間のすべてのステーションは、このテーブルに挿入されている1つのバス路線を取りました。私は何をしようとしている

されます。彼/彼女は私が彼の出発点(最も近いバスステーション)を取得し、目的地

てるそうするために、現在の場所から目的地まで

に行きたいとき、彼/彼女が選択すべきかのバス路線の乗客を表示私はバスのルートの間にこれらの2つの駅を持っているすべてのバスルートの番号を取得する必要があります。

ある時点では、乗客が行きたい1つの駅を通過するだけのバスルートがあるかもしれません。 Ex。乗客の現在の場所または彼女の目的地のみを通過するバスがあるかもしれません。

私が乗客に見せたくないルート。

下の表から、私はちょうど170ルートが乗客の目的地を通過されていないとして、私は開始位置=「kotte接合」と終了位置=「bangala接合」 ため を検索する場合は168と163のルート番号を表示する必要があります。

+--------------------------------------------------------------------------------------+ 
| ID|route_number|station_name|station_order|added_date|CURRENT_TIMESTAMP|last_updater | 
+--------------------------------------------------------------------------------------+ 
| |1|168|Kotahena|1|2017-05-28|2017-05-28 08:13:13|100024        | 
| |2|168|borella|2|2017-05-28|2017-05-28 08:13:13|100024        | 
| |3|168|kota road|3|2017-05-28|2017-05-28 08:14:20|100024        | 
| |4|168|Rajagiriya|4|2017-05-28|2017-05-28 08:14:20|100024       | 
| |5|168|kotte junction|5|2017-05-28|2017-05-28 08:15:46|100024      | 
| |6|168|mati ambalama|6|2017-05-28|2017-05-28 08:15:46|100024       | 
| |7|168|kotubamma|7|2017-05-28|2017-05-28 08:16:35|100024        | 
| |8|168|bangala junction|8|2017-05-28|2017-05-28 08:16:35|100024      | 
| |9|163|dehiwala|1|2017-05-28|2017-05-28 08:50:09|100024        | 
| |10|163|battaramulla|2|2017-05-28|2017-05-28 08:50:09|100024       | 
| |11|163|kotte junction|2|2017-05-28|2017-05-28 08:50:56|100024      | 
| |12|163|mati ambalama|3|2017-05-28|2017-05-28 08:50:56|100024      | 
| |13|163|kotubamma|4|2017-05-28|2017-05-28 08:51:42|100024       | 
| |14|163|bangala junction|5|2017-05-28|2017-05-28 08:51:42|100024      | 
| |15|170|kotte junction|1|2017-05-28|2017-05-28 09:04:47|100024      | 
| |16|170|mati ambalama|2|2017-05-28|2017-05-28 09:04:47|100024      | 
+--------------------------------------------------------------------------------------+ 

私は正確に欲しいものを得ることができませんでした。

SELECT * FROM `bus_route_stations` WHERE `station_name` = 'kotte junction' UNION ALL SELECT * FROM `bus_route_stations` WHERE `station_name` = 'bangala junction' 


SELECT * FROM bus_route_stations A 
INNER JOIN bus_route_stations B 
ON B.station_name = A.station_name 
WHERE A.station_name = 'kotte junction' AND B.station_name = 'bangala junction' 

SELECT * FROM bus_route_stations A INNER JOIN bus_route_stations B ON B.station_name = A.station_name WHERE A.station_name IN('kotte junction' ,'bangala junction') 

答えて

1
SELECT A.route_number 
    FROM bus_route_stations A 
    JOIN bus_route_stations B USING(route_number) 
    WHERE A.station_name = 'kotte junction' 
     AND B.station_name = 'bangala junction' 
     AND A.station_order < B.station_order 

この '複合' 指数持つことが良いでしょう:すごい

INDEX(station_name, route_number, station_order) -- in this order 
+0

を!あなたは素晴らしい男です。完璧! – Yasitha

関連する問題