Я делаю pgRouting и мне нужно вставить целочисленный результат в алгоритм dijkstra из моего SELECT
.
SELECT ST_AsGeoJSON(ST_Transform(way, 4326)) AS geometry
FROM pgr_dijkstra(
'SELECT osm_id AS id, source, target, st_length(way) as cost FROM planet_osm_roads',
34, 3000, false
) as di
JOIN planet_osm_roads pt
ON di.edge = pt.osm_id ;
Это работает, но если я хочу заменить, например, узел 34 в функции dijkstra на номер узламоей улицы с этим запросом:
SELECT pl.source::integer
FROM planet_osm_roads pl
WHERE pl.name LIKE ''street_name''
LIMIT 1
И вместе:
SELECT ST_AsGeoJSON(ST_Transform(way, 4326)) AS geometry
FROM pgr_dijkstra(
'SELECT osm_id AS id, source, target, st_length(way) as cost FROM planet_osm_roads',
'SELECT pl.source::integer FROM planet_osm_roads pl WHERE pl.name LIKE ''street_name'' LIMIT 1',
3000, false
) as di
JOIN planet_osm_roads pt
ON di.edge = pt.osm_id ;
Сбой с ошибкой:
ERROR: function pgr_dijkstra(unknown, unknown, integer, boolean) is not unique
LINE 93: FROM pgr_dijkstra(
^
HINT: Could not choose a best candidate function. You might need to add explicit type casts.
Iдумаю, это потому, что мой запрос select возвращает результат sql с идентификатором строки и именем столбца.Но, возможно, есть другая проблема.
Как вывести его только как одно целое число?