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)
但是使用数据库的全部意义在于操作集合而不是元素,当然?
那么,有更好的方法吗?
谢谢梅兰妮
与所有布尔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)