【问题标题】:How to select two different rows in same table having given values in a specific column如何在同一表中选择具有特定列中给定值的两个不同行
【发布时间】:2017-05-28 12:52:48
【问题描述】:

我正在尝试从包含有关巴士路线车站详细信息的表中选择行。

如果选择一条公交路线,则起点站和终点站之间的所有车站都将插入到此表中。

我想做的是。告诉乘客当他/她想从当前地点去他/她的目的地时他/她应该选择哪条公交路线

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

然后我需要获取在巴士路线之间有这两个车站的所有巴士路线编号。

在某些时候,可能会有公交路线只经过乘客想去的一个车站。 前任。可能有一辆巴士只能经过乘客的当前位置或她/他的目的地

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

从下表中,如果我搜索,我只需要显示 168 和 163 路线号 开始位置 = 'kotte junction' 和结束位置 = 'bangala 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')

【问题讨论】:

    标签: php mysql mysqli


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多