mysql - 如何使用函数连接两个 MySQL 表

标签 mysql select join

我需要一些帮助来连接两个表。我有:

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/

相关文章:

.net - LINQ,无法加入字符串

mysql - mysql 中存储大约 4.5 亿行给定数据的最佳数据库结构是什么

mysql - 在数据库中实现相互关联的元组的最佳方法,例如零件交换汽车

mysql - 子查询作为列 : Nested Subquery

angularjs - 如何设置选择选项的value属性?

forms - Laravel 表单选择自定义文本

MySQL 从多个表中选择并创建一个新表

mysql - phpmyadmin mySQL 查询连接

mysql - 如何获取MySql数据库中所有列名显示在comboBox中

mysql - 获取使用的 select 语句具有不同的列数