我正在寫一個應用程序,對車輛路徑問題進行變更。該應用程序具有路線,停靠點和路線行駛方向。我需要爲一個視圖編寫查詢,該視圖組合了路由的所有相關屬性。因此,我需要將路由表連接到單個查詢中的多對多關係。
查詢詳細
有路由表,該表route_stop_join和路由表的方向。路線和站點之間的關係實際上是多對多的,但我們只需要一個stop id列表,因此可以考慮與連接表的一對多關係。下面的查詢計算總和n次,其中n是停止的次數:
select rj.id,
rj.stops,
sum(rd.time_elapsed) as total_time,
sum(rd.drive_distance) as total_distance
from routes_directions rd
right join (select r.id,
array_agg(j.stop_id) as stops
from routes r
left join routes_stops_join j
on r.id = j.route_id
group by r.id) rj
on rj.id = rd.route_id
group by rj.id, rj.stops;
,但我想看看是否有一個:
select r.id,
array_agg(j.stop_id) as stops,
sum(rd.time_elapsed) as total_time,
sum(rd.drive_distance) as total_distance
from routes_directions rd
right join routes r
on rd.route_id = r.id
left join routes_stops_join j
on r.id = j.route_id
group by r.id;
我可以在此使用子查詢這樣做在沒有子選擇的單個查詢中執行此操作的方法。
左對齊SQL!?!你真的是這樣寫嗎?還是它是一個複製和粘貼問題 - 並且你希望我們無論如何都要閱讀它。 – jarlh
@McNets,但我在編輯之前編寫了我的評論。現在看起來好多了! – jarlh
好吧,我在編輯後看到您的評論,這是一個時間旅行問題。 @jarlh – McNets