【发布时间】:2010-06-25 17:31:31
【问题描述】:
我需要一些帮助来加入两个表。我有:
my_type_table,其中有列:
- 类型(VARCHAR)
- 纬度(十进制)
- 经度(十进制)
...和neighborhood_shapes,它有列:
- 社区 (VARCHAR)
- neighborhood_polygons(几何)
我有一个名为myWithin 的函数,它检查纬度和经度以查看它们是否在邻域多边形中。它以纬度和邻域形状作为参数。如果点不在多边形内,myWithin 函数返回 0,如果在多边形内,则返回 1。
我可以做如下选择语句:
SELECT type, latitude, longitude, 'Newport' AS neighborhood
FROM my_type_table
WHERE myWithin(POINTFROMTEXT( CONCAT( 'POINT(', latitude, ' ', longitude, ')' ) ) ,
(SELECT neighborhood_shapes.neighborhood_polygons
FROM neighborhood_shapes
WHERE neighborhood_shapes.neighborhoods = 'Newport')) = 1
本次选择的结果例如:
type | latitude | longitude | neighborhood
---------------------------------------------
small | 30.3030 | -70.7070 | Newport
我的问题是我有很多社区。我不想每次都输入邻域。有没有办法删除“新港”?基本上,我希望函数在每个点上运行,并给出类型、纬度、经度以及该点所在的邻域?
我可以复制上面的 select 并使用 UNION ALL 加入 select 语句,但输入每个社区的名称将是一场噩梦。一定有更好的方法。
有什么建议吗?
【问题讨论】: