2013-07-28 72 views
0

現在感覺我的SQL技能有點生疏。我想實現的是將兩個SQL查詢連接到一個基本上所有關於特定停止的信息。GTFS數據 - 停止數據

第一個查詢很簡單。它採取所有停止信息。小意思,我會說;)

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以及我需要的所有信息!

謝謝!

回答

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 
+0

非常感謝非錘法:) – dargod

+0

而是如何加快步伐!?當我在phpMyAdmin中調用它幾乎是好的,但在PHP中需要很長時間.. – dargod

+0

顯然錘法更快:) – dargod