Oracle Spatial查询提供ORA-01427(单行子查询返回多行)

时间:2016-06-06 11:27:30

标签: oracle spatial spatial-query oracle-spatial

我在地图上创建一个多边形并尝试将最相关的街道提取到该多边形。但是,当我的查询在多边形覆盖3-5个街道时起作用,当它覆盖更大的区域时,它会返回上述错误。我试图从我的查询中获取至少一个街道代码结果。我错过了什么?

SELECT ID FROM STREET WHERE CITY_STREET_CODE = (
    SELECT 
         NS.CITY_STREET_CODE          CITYSTREETCODE
    FROM NEIGHBOURHOOD_STREET NS
    INNER JOIN NEIGHBOURHOOD N
      ON N.ID = NS.NEIGHBOURHOOD_ID
    WHERE SDO_RELATE(N.GEOLOC,
                    MYGEOLOC,
                    'MASK=ANYINTERACT') = 'TRUE'
     AND NS.CITY_STREET_CODE IN
         (SELECT CITY_STREET_CODE
            FROM (SELECT CITY_STREET_CODE, DISTANCE
                    FROM (SELECT
                           A.CITY_STREET_CODE, SDO_NN_DISTANCE(1) DISTANCE
                            FROM STREET A
                           WHERE SDO_NN(A.GEOLOC,
                                        MYGEOLOC,
                                        'SDO_BATCH_SIZE=10 DISTANCE=500 UNIT=M',
                                        1) = 'TRUE'
                             AND A.CITY_STREET_CODE > 0
                           ORDER BY DISTANCE)
                   WHERE ROWNUM <= 1))
                   )

ps:我尝试降低和增加批量大小,我也试过把&#34; sdo_num_res&#34;而不是它;两个都没有工作,或者我无法正常工作。

1 个答案:

答案 0 :(得分:1)

您的问题与空间扩展无关。问题是一个简单的SQL问题。你有:

$('#accepted-media').val(opts)

但是,子查询可以返回多行 - 因此错误。

最简单的解决方案是将WHERE CITY_STREET_CODE = ( . . . ) 更改为=

IN