如何在同一个表中选择具有给定值的特定列中的两个不同的行

时间:2017-05-28 04:16:27

标签: php mysql mysqli

我试图从包含有关公交路线车站详情的表格中选择行。

如果采用一条公共汽车路线,则将起始站和终点站之间的所有站都插入此表中。

我想要做的是。向乘客显示他/她想要从当前地点前往目的地时应选择的公交路线

这样做我得到他的起点(最近的公交车站)和目的地

然后我需要获得在公交车路线之间有两个车站的所有公交车路线号码。

在某些时候,可能有公共汽车路线只能通过乘客想去的一个车站。 防爆。可能有一辆公共汽车可能只通过乘客的当前位置或她/他的目的地

那些我不想向乘客展示的路线。

从下表中我只需要搜索168和163路线号码 对于起始位置=' kotte junction'和结束位置='班加拉交界处' 因为170路线没有通过旅客目的地。

+--------------------------------------------------------------------------------------+
| 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 个答案:

答案 0 :(得分:2)

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