2013-10-25 52 views
1

我想在PostGIS函數中使用兩個SELECT語句的輸出。Postgres選擇多個選擇爲

這樣做的正確語法是什麼?我在第二個SELECT語句處或附近收到語法錯誤。

SELECT ST_Split(tracks, roads) 
FROM 
(
    SELECT * FROM (SELECT ST_Buffer(road_geom,50) FROM table1 WHERE a = '' AND b = '') as roads, 
    SELECT * FROM (SELECT the_geom FROM table2 WHERE c = '' AND d = '') as tracks 

) 

錯誤輸出:

ERROR: syntax error at or near "SELECT" 
LINE 5: SELECT * FROM (SELECT the_geom FROM table2... 
    ^
********** Error ********** 
ERROR: syntax error at or near "SELECT" 
SQL state: 42601 
Character: 178 

謝謝!

回答

3
+0

感謝您的快速和準確的回覆

WITH roads as (SELECT ST_Buffer(road_geom,50) as road FROM table1 WHERE a = '' AND b = ''), tracks as (SELECT the_geom as track FROM table2 WHERE c = '' AND d = '') SELECT ST_Split((select track from tracks), (select road from roads)); 

文檔。 – Matt

+1

有一點需要注意的是,從「道路」和「軌道」虛擬表(「WITH」塊中的子句)選擇'' - 如果它們能返回多於一行的查詢將會失敗,所以你應該給它們兩個添加「LIMIT 1」(我的意思是在「WITH」子句中)。 – bma

+0

是的 - 我最終將循環中的分割包裝起來。再次感謝你的幫助! – Matt