地理列上的sql server union

Mel*_*nie 4 sql t-sql sql-server-2008 sqlgeography

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

我想在地理元素的交集处计算联合,如下所示:

SELECT * from Regions join Facilities on [Regions].[geography].STIntersects([Facilities].[geography])
Run Code Online (Sandbox Code Playgroud)

这当然不起作用.区域是大多边形,设施是每个点仅包含在一个多边形中的点.

我可以写一些(伪代码)

for each r in Regions:
    for each f in Facilities:
        if f.[geography].STIntersects(r.[geography]):
            print r, f
Run Code Online (Sandbox Code Playgroud)

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

那么,有更好的方法吗?

谢谢梅兰妮

Ric*_*iwi 6

与所有布尔SQL Server函数一样,STIntersect()返回一个位,使其为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
Run Code Online (Sandbox Code Playgroud)