我有两张表,一张表包含国家的北、东、南和西坐标,每个国家都有一个矩形,这是结构,
+--------------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------------------+------+-----+---------+----------------+
| boundary_id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| country | varchar(100) | NO | | NULL | |
| country_code | varchar(4) | NO | | NULL | |
| geo_west | float(10,6) | NO | | NULL | |
| geo_north | float(10,6) | NO | | NULL | |
| geo_south | float(10,6) | NO | | NULL | |
| geo_east | float(10,6) | NO | | NULL | |
+--------------+----------------------+------+-----+---------+----------------+
现在,对于另一个表存储用户的位置,我需要他们的位置(纬度和经度)与表匹配,以检查他们是否属于所选的所需国家。换句话说,只选择落在所选国家范围内的用户。
这是表格中的数据(选择4),
+-------------+----------------+--------------+-------------+------------+------------+-------------+
| 边界标识 | 国家 | 国家代码 | geo_west | geo_north | geo_south | geo_east | +-------------+----------------+--------------+--- ----------+------------+------------+------------- + | 218 | 阿富汗 | 自动对焦 | 60.478436 | 38.483425 | 29.377470 | 74.879463 | | 224 | 阿尔巴尼亚 | 铝 | 19.293968 | 42.665615 | 39.648354 | 21.068476 | | 188 | 阿尔及利亚 | DZ | -8.673869 | 37.093727 | 18.960026 | 11.979549 | | 229 | 美属萨摩亚 | 作为 | -170.841339 | -14.162115 | -14.382480 | -169.416061 | +-------------+----------------+--------------+--- ----------+------------+------------+------------- +
用户表,
+---------+-----------+-----------+
| user_id | latitude | longitude |
+---------+-----------+-----------+
| 6 | 51.495010 | -0.071583 |
| 7 | 51.204731 | 1.251486 |
| 8 | 51.261860 | 1.327887 |
| 9 | 51.487850 | -0.071926 |
| 10 | 51.498699 | -0.201187 |
| 11 | 51.436462 | -0.100937 |
| 12 | 51.331093 | 0.829124 |
| 13 | 51.565121 | -0.065918 |
| 14 | 51.493568 | -0.248566 |
+---------+-----------+-----------+
我是否需要将坐标转换为东北和西南以及如何有效地匹配这些?
由于其局限性,我更愿意避免使用地理定位服务。