Cześć,
Bawię się trochę z danymi GTFS i mam problem z dwoma zapytaniami. Lokalnie (SQLite) działają bez problemu, schody zaczynają się dopiero gdy używam ich w skrypcie PHP z moją bazą MySQL.
- Pobierz wszystkie przystanki powiązane z daną linią autobusową
Próbuję dwóch zapytań:
SELECT T3.stop_id, T3.stop_name
FROM trips AS T1
JOIN
stop_times AS T2
ON T1.trip_id=T2.trip_id AND route_id = <route_id>
JOIN stops AS T3
ON T2.stop_id=T3.stop_id
GROUP BY T3.stop_id, T3.stop_name
Oraz
SELECT stop_id, stop_name FROM stops WHERE stop_id IN (
SELECT DISTINCT stop_id FROM stop_times WHERE trip_id IN (
SELECT trip_id FROM trips WHERE route_id = <route_id>));
- Do infromacji o przystanku dodaj informację o wszystkich liniach jakie z niego odjeżdzają
Tutaj akurat nie zabijam bazy danych ale dziala to bardzo powoli.
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
Oraz
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
Czy mógłby mi ktoś poradzić jak to przeskoczyć?
Dziękuję i pozdrawiam!