2017-04-21 50 views
1

Oracle 12c DB帶定位器...使用空間查詢和限制結果創建視圖

我有2個表 - table1有一個點幾何列。 表2有一個多邊形幾何列。 我想創建一個只有table1多邊形的視圖,它恰好包含來自table1的1個點的 。這可能嗎? 我曾嘗試以下,但它仍然會返回包含多個點的多邊形:

CREATE OR REPLACE FORCE EDITIONABLE VIEW VIEW1 AS 
SELECT a.address, l.geometry as GEOMETRY 
from table1 a 
inner join table2 l 
on sdo_anyinteract(a.geometry, l.geometry) = 'TRUE' 
having 2 > 
(select count (a.address) 
from table1 a 
inner join table2 l 
on sdo_anyinteract(a.geometry, l.geometry) = 'TRUE');  

任何幫助/建議將不勝感激。

+0

你有兩個表(ID)的主鍵嗎? –

+0

@ArkadiuszŁukasiewicz是的 – user3120200

回答

0

如果我理解正確的話,你應該能夠通過只使用一個簡單組和計數having子句

SELECT 
    a.address, 
    l.id 
FROM 
    table1 a 
    INNER JOIN table2 l ON (sdo_anyinteract(a.geometry,l.geometry) = 'TRUE') 
GROUP BY 
    a.address, l.id 
HAVING 
    COUNT(*) = 1; 
+0

我不認爲這會起作用,因爲我將不得不在'group by'中包含l.geometry,這會導致ORA-22901:無法比較對象類型的VARRAY或LOB屬性 – user3120200

+0

您可以使用l .id代替,你可以在組中使用?然後使用結果重新連接到table2以獲取幾何? (編輯答案) – unleashed