【问题标题】:Create view with spatial query and limit results使用空间查询和限制结果创建视图
【发布时间】:2017-09-18 08:17:36
【问题描述】:

带有定位器的 Oracle 12c DB...

我有 2 个表 - table1 有一个点几何列。 Table2 有一个多边形几何列。 我想创建一个仅包含完全包含的 table2 多边形的视图 表 1 中的 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');    

任何帮助/建议将不胜感激。

【问题讨论】:

  • 两个表(id)中是否都有主键?
  • @ArkadiuszŁukasiewicz 是的

标签: sql oracle oracle12c oracle-spatial


【解决方案1】:

如果我理解正确,您应该可以只使用简单的 group by 并计入 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;

【讨论】:

  • 我认为这行不通,因为我必须在“分组依据”中包含 l.geometry,这会导致 ORA-22901:无法比较对象类型的 VARRAY 或 LOB 属性跨度>
  • 你能用 l.id 代替吗,你可以在 group by 中使用它吗?然后使用结果重新加入到 table2 以获取几何? (编辑答案)
猜你喜欢
  • 2013-06-22
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多