2013-04-28 92 views
0

我再次遇到另一個SQL問題。使用Zend框架的SQL重查詢

我有2個表:

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 

$ cooLong和$ cooLat是PHP變量我傳入調用該請求的函數。

所以從選擇,我得到一個行集,但我不知道如何將2混合,讓我將使用第二個查詢結果中的第一個最終的查詢。

無論如何,即使我通過第一個問題搞定了,我將有數目不詳的比賽。 請問我要產生通過執行類似的要求:

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

和對城市的每一個?

回答