このクエリの結果は、order frompath
が preserver である場合にのみ意味があります。ただし、左内側の結合では、結果がスクランブルされます。結果セットに結果のインデックスのような新しい列を作成し、SQL全体の最後の句としてORDER BY idx
.
これは、最終的な順序を維持しようとしない私のクエリです:
SELECT path.*, network_link.v0prt
FROM (SELECT * // Need order preserved from this one
FROM shortest_path_shooting_star(
'SELECT gid as id, source::integer,
target::integer, distance::double precision as cost,
x1, y1, x2, y2, rule, to_cost FROM
network_link as net ORDER BY net.gid', 9, 1, false, false)) as path
LEFT OUTER JOIN
(SELECT DISTINCT gid, v0prt FROM network_link) as network_link
ON (network_link.gid=path.edge_id);
どんな洞察も素晴らしいでしょう。
ありがとう。そして、インデックス値と ORDER BY を追加しようとしました(これは機能しません)。
SELECT path.*, network_link.v0prt
FROM (SELECT incr(0) as idx, *
FROM shortest_path_shooting_star(
'SELECT gid as id, source::integer,
target::integer, distance::double precision as cost,
x1, y1, x2, y2, rule, to_cost FROM
network_link as net ORDER BY net.gid', 9, 1, false, false)) as path
LEFT OUTER JOIN
(SELECT DISTINCT gid, v0prt FROM network_link) as network_link
ON (network_link.gid=path.edge_id)
ORDER BY idx;