4

我正在使用 sql server 2008 R2,我有两个表,区域和设施。两者都有一个包含地理元素的列。

我想计算地理元素交集的并集,如下所示:

SELECT * from Regions join Facilities on [Regions].[geography].STIntersects([Facilities].[geography])

这当然行不通。区域是大多边形,设施是点,每个点只包含在一个多边形中。

我可以写一些(伪代码)

for each r in Regions:
    for each f in Facilities:
        if f.[geography].STIntersects(r.[geography]):
            print r, f

但是使用数据库的全部意义在于操作集合而不是元素,对吗?

那么,有没有更好的方法来做到这一点?

谢谢梅兰妮

4

1 回答 1

6

STIntersect() 与所有布尔 SQL Server 函数一样,返回一点,因此它是 0 或 1。
这成为您的 WHERE 条件。

r 和 f 的 foreach 隐含在 JOIN 语句中。

SELECT r.geography, f.geography
from Regions r
join Facilities f on r.geography.STIntersects(f.geography)=1
于 2012-10-10T06:44:26.957 回答