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
现在我从StopXYZ
搜索到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 isXYZ
搜索到StopJJJ
。我在这两站之间搜索