Dylan Beaudette wrote:
Is there any way to run a function, which expects a single value as an
argument, for each row returned from a select statement? Note that this is a
special function, used in the following way:
SELECT sum(length(the_geom )) as dist_meters
FROM
shortest_path_as_geometry('roads', 2192, 154) ;
In the above example the function "shortest_path_as_geometry" expects three
arguments... Is there any way to feed a function like this its arguments from
column returned from a previous select statement? Or, would this function
have to be re-written to allow for this flexibility?
thanks in advance,
You question isn't 100% clear to me, but I'm not going to let that stop
me from opining :-)
Sounds like you have some query that returns (string, roadid1, roadid2)
and you want to call the shortest_path_as_geometry function on each row
that comes back from that, then sum the length of those geometries.
Approach #1:
Change the sum_path_as_geometry function to take an array or row instead
of three value and move the shortest_path_as_geometry function into the
SELECT list, e.g.
SELECT sum(length(sum_path_as_geometry(a.c1, a.c2, a.c3)))
FROM ( SELECT c1, c2, c3 FROM ... ) a;
Approach #2:
Glue the other query and sum_path_as_geometry together with a new table
function (i.e. a function that returns a set of rows). Define the new
function to apply the sum_path_as_geometry function to the appropriate
rows and then use the new function in your query:
SELECT sum(length(the_geom)) FROM new_function();
_______________________________________________
vox-tech mailing list
[email protected]
http://lists.lugod.org/mailman/listinfo/vox-tech