Php 基于Zend框架的SQL重查询
我再次遇到另一个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公里(例如)的城市
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' ...