Php 需要Mysql查询以搜索从站点到站点的总线

Php 需要Mysql查询以搜索从站点到站点的总线,php,mysql,Php,Mysql,我为公交车和路线和车站表创建了表格 总线表 id , bus_name 1 AAA 2 BBB id, stop_name, latitude, longitude 1 XYZ 12.5555 77.222 2 SSS 13.5555 77.2888 3 EEE 88.444 77.222 4 C 34.8859309 -97.47070 5 JJ

我为
公交车
路线
车站
表创建了表格

总线

id ,  bus_name
 1      AAA
 2      BBB
id, stop_name, latitude, longitude
 1    XYZ        12.5555    77.222
 2    SSS        13.5555    77.2888
 3    EEE        88.444     77.222
 4    C          34.8859309  -97.47070
 5    JJJ        32.9902355   -97.99804
id, bus_id,  stop_id, arrival_time,   departure_time,     START_END_STOP
  1      1        1         0000            8.00AM        START
  2      1        2        8.10AM          8.10AM 
  3      1        3        8.15AM          8.16AM
  4      1        4        8.20AM          8.20AM 
  5      1        5        8.25AM          0000            END
  6      2        1        0000            8.10AM          START
  7      2        3        8.15AM          8.18AM
  8      2        5        8.27AM           0000           END
停止
表格

id ,  bus_name
 1      AAA
 2      BBB
id, stop_name, latitude, longitude
 1    XYZ        12.5555    77.222
 2    SSS        13.5555    77.2888
 3    EEE        88.444     77.222
 4    C          34.8859309  -97.47070
 5    JJJ        32.9902355   -97.99804
id, bus_id,  stop_id, arrival_time,   departure_time,     START_END_STOP
  1      1        1         0000            8.00AM        START
  2      1        2        8.10AM          8.10AM 
  3      1        3        8.15AM          8.16AM
  4      1        4        8.20AM          8.20AM 
  5      1        5        8.25AM          0000            END
  6      2        1        0000            8.10AM          START
  7      2        3        8.15AM          8.18AM
  8      2        5        8.27AM           0000           END
路线
表格

id ,  bus_name
 1      AAA
 2      BBB
id, stop_name, latitude, longitude
 1    XYZ        12.5555    77.222
 2    SSS        13.5555    77.2888
 3    EEE        88.444     77.222
 4    C          34.8859309  -97.47070
 5    JJJ        32.9902355   -97.99804
id, bus_id,  stop_id, arrival_time,   departure_time,     START_END_STOP
  1      1        1         0000            8.00AM        START
  2      1        2        8.10AM          8.10AM 
  3      1        3        8.15AM          8.16AM
  4      1        4        8.20AM          8.20AM 
  5      1        5        8.25AM          0000            END
  6      2        1        0000            8.10AM          START
  7      2        3        8.15AM          8.18AM
  8      2        5        8.27AM           0000           END
现在我从Stop
XYZ
搜索到
JJJ

我想要的结果是

bus_name  from_stop_name  departure_time  to_stop_name  arrival_time  Notes
  AAA       XYZ             8.00AM             JJJ            8.25AM   NIL
  BBB       XYZ             8.10AM             JJJ            8.27AM   NIL
或者我从
XYZ
C

bus_name  from_stop_name   departure_time  to_stop_name arrival_time  Notes
  AAA       XYZ             8.00AM             C         8.20AM        NIL
  BBB       XYZ             8.10AM             JJJ       8.27AM        JJJ to C is 600 Mts
我需要Mysql选择查询,请帮助我。
谢谢

我认为下面的查询将为您提供所需的结果。最好将输入参数化,以使查询更加通用

select buses.bus_name, s1.stop_name as from_stop_name, t1.departure_time, 
s2.stop_name as to_stop_name, t2.arrival_time
from buses
inner join table t1 on t1.bus_id = buses.id
inner join stop s1 on s1.id = t1.stop_id
inner join table t2 on t2.bud_id = buses.id
inner join stop s2 on s2.id = t2.stop_id
where buses.bus_name in ('AAA', 'BBB')
and s1.stop_name = 'XYZ'
and s2.stop_name = 'JJJ'

您可以尝试下面的查询。我们需要在查询中的4个位置写入输入参数“stop_name”。 表名为 以下查询中使用的公交车、路线和站点

select A.name, A.departure_time, A.from_stop_name, RO.arrival_time,
'JJJ' as to_stop_name  from 
 (select bus_id, name, departure_time,
 stop_name as from_stop_name from route R left join stops S on
 R.stop_id = S.id left join buses B on bus_id = B.id where stop_id in
 (select id from stops where stop_name in ('XYZ', 'JJJ')) group by
 bus_id having count(distinct stop_id) = 2) A 
left join 
 route RO on 
 A.bus_id = RO.bus_id and RO.stop_id in (SELECT id from stops where 
 stop_name = 'JJJ');


提供您为此尝试过的查询。是的,您是指源到目的地两个站点搜索吗?@pawansen是的,我搜索两个源到目的地我只提供输入是
站点名称
,而不提供
总线名称
@VadivelS:所以删除'bus.bus_name in('AAA',BBB')和',因此,最后两行读取'where s1.stop_name='XYZ'和s2.stop_name='JJJ',其中在Query@VadivelS你这是什么意思?我从Stop is
XYZ
搜索到Stop
JJJ
。我在这两站之间搜索