GTFS数据 - 停止数据

时间:2013-07-28 21:24:24

标签: mysql sql join gtfs

此刻我的SQL技能感觉有点生气。我想要实现的是将两个SQL查询连接成一个,它基本上给出了有关特定停止的所有信息。

第一个查询很简单。它需要所有停止信息。我会说一块蛋糕;)

    SELECT stop_id, stop_name, stop_lat, stop_lon, zone_id 
FROM stops WHERE stop_id = 97

第二个有点复杂但是在这里找到我的解决方案并且只需要很小的改动,就像我想要的那样。

select GROUP_CONCAT( distinct rt.route_short_name) as routes
from routes rt, trips tr, stop_times st
where rt.route_id = tr.route_id
and tr.trip_id = st.trip_id
and st.stop_id = 97

现在,我想在第一个查询结果中添加第二个查询结果作为另一列。感谢json_encode之后,我将拥有所需的所有信息的好JSON!

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用锤子方法:

SElECT * FROM (
   SELECT stop_id, stop_name, stop_lat, stop_lon, zone_id 
   FROM stops WHERE stop_id = 97
) a INNER JOIN (
   select st.stop_id, GROUP_CONCAT( distinct rt.route_short_name) as routes
   from routes rt, trips tr, stop_times st
   where rt.route_id = tr.route_id
   and tr.trip_id = st.trip_id
   and st.stop_id = 97
) b ON a.stop_id = b.stop_id

或加入他们:

select stops.stop_id, 
stops.stop_name, 
stops.stop_lat, 
stops.stop_lon, 
stops.zone_id, 
GROUP_CONCAT( distinct rt.route_short_name) as routes
from routes rt, trips tr, stop_times st, stops
where rt.route_id = tr.route_id
and tr.trip_id = st.trip_id
and st.stop_id = stops.stop_id
and st.stop_id = 97
group by st.stop_id