0

現時点で、私の SQL スキルについて少しさびた感じです。私が達成したいのは、2 つの SQL クエリを 1 つに接続して、特定の停留所に関する基本的にすべての情報を提供することです。

最初のクエリは単純なものです。すべての停止情報が必要です。簡単なことだと思います;)

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

2番目のものはもう少し複雑ですが、ここで私の解決策を見つけました。小さな変更を加えれば、私が望むようになります。

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

ここで、最初のクエリ結果の別の列として 2 番目のクエリ結果を追加したいと思います。そのおかげで、json_encode の後、必要なすべての情報を含む素敵な JSON が得られます!

ありがとう!

4

1 に答える 1

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
于 2013-07-28T23:46:40.057 に答える