Php 基于Zend框架的SQL重查询

Php 基于Zend框架的SQL重查询,php,mysql,sql,zend-framework,Php,Mysql,Sql,Zend Framework,我再次遇到另一个SQL问题 我有两张桌子: CREATE TABLE cities( city_id INT PRIMARY KEY, city_name TEXT, city_lat TEXT, city_long TEXT ); CREATE TABLE entries( entry_id INT PRIMARY KEY, city_name TEXT ); 这里是有趣的部分 我正在尝试按半径进行搜索,这意味着我希望获得我要查找的城市半径为10公里(例如)的城市

我再次遇到另一个SQL问题

我有两张桌子:

CREATE TABLE cities(  
 city_id INT PRIMARY KEY, 
 city_name  TEXT,
 city_lat TEXT,
 city_long TEXT
 ); 

CREATE TABLE entries(
 entry_id INT PRIMARY KEY,
 city_name TEXT
 );
这里是有趣的部分

我正在尝试按半径进行搜索,这意味着我希望获得我要查找的城市半径为10公里(例如)的城市名称

该查询类似于

 SELECT * FROM entries WHERE entries.city_name LIKE [all the cities in the radius].
我有一个SQL查询来获取与我想要的城市相对应的城市,即:

SELECT `city_name`, ( 6371 * acos( cos( radians($cooLat) ) * cos( radians( city_lat ) ) * cos( radians( city_long) - radians($cooLong) ) + sin( radians($cooLat) ) * sin( radians( city_lat) ) ) ) AS distance FROM cities HAVING distance < $radius ORDER BY distance

对于每一个城市,你可能应该使用空间数据类型和索引来处理这类数据:

SELECT * FROM entries WHERE entries.city_name LIKE 'name_a' OR entries.city_name LIKE 'name_b' OR entries.city_name LIKE 'name_c' ...