2017-09-04 11 views
0

실용 안내서를 pgrouting에서 예제를 실행하고 있지만 자체 테이블을 가지고이 오류가 발생했습니다. 책의 예제처럼이 오류를 피하기 위해 LIMIT 1을 사용했지만 다른 오류가 있어야합니다. 수정에 대한 아이디어가 있습니까?오류 : 표현식으로 사용 된 하위 쿼리에 의해 하나 이상의 행이 반환되었습니다.

ERROR :

more than one row returned by a subquery used as an expression

SELECT * 
    FROM pgr_drivingDistance(
    'SELECT id, source, target, 
     cost 
     FROM network.roads', 
    (SELECT v.id 
     FROM network.master_table AS h 
     ,LATERAL (SELECT id FROM network.roads_vertices_pgr AS n 
      ORDER BY h.geom <-> n.the_geom LIMIT 1) AS v), 
     5000, false, false 
    ); 

답변

1

제한 1 network.master_table과의 CROSS JOIN LATERAL의 그

(SELECT v.id 
     FROM network.master_table AS h 
     ,LATERAL (SELECT id FROM network.roads_vertices_pgr AS n 
      ORDER BY h.geom <-> n.the_geom LIMIT 1) AS v) 

,

SELECT id FROM network.roads_vertices_pgr AS n 
     ORDER BY h.geom <-> n.the_geom LIMIT 1 

오류가 전체 하위 쿼리에에 레술 그 하위 쿼리 (당신은 하나의 행으로 알고 있습니다). 따라서 network.master_table의 SELECT가 둘 ​​이상의 행을 반환하면 그 오류가 발생합니다.