我需要一些帮助来连接两个表。我有:
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
这个select的结果例如是:
type | latitude | longitude | neighborhood
---------------------------------------------
small | 30.3030 | -70.7070 | Newport
我的问题是我有很多社区。我不想每次都输入邻居。有没有办法删除“纽波特”?基本上,我希望该函数在每个点上运行并提供类型、纬度、经度以及该点位于哪个邻域?
我可以复制上面的选择并使用 UNION ALL 加入选择语句,但是输入每个社区的名称将是一场噩梦。一定有更好的方法。
有什么建议吗?
最佳答案
我当然没有测试过这个......但它似乎可以像这样重组:
SELECT t.type, t.latitude, t.longitude, s.neighborhood
FROM my_type_table t, neighborhood_shapes s
WHERE myWithin(POINTFROMTEXT( CONCAT( 'POINT(', t.latitude, ' ', t.longitude, ')' ) ) , s.neighborhood_shapes.neighborhood_polygons ) = 1
关于mysql - 如何使用函数连接两个 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3120083/