2016-02-12 38 views
1

嗨,我有一個表,我存儲完整的地址和一個字段,只有在其他領域的城市名稱。 表字段(ID,地址,城市,hotel_name)如何檢查只有城市名稱,當用戶輸入完整的地址,我存儲在我的數據庫中的城市

如果用戶也基於街道搜索,但如果出現該街道的結果,則應先出現,然後顯示城市的提醒結果,例如用戶搜索羅素街紐約然後網站顯示「羅素街頭」的結果,然後顯示結果紐約或附近的街道。

我目前通過谷歌地方api的完整地址,他們返回我城市名稱,所以我過濾城市領域的城市記錄,但有些情況下谷歌api不返回任何城市名稱,如果搜索字符串有城市名稱。所以有任何其他方式來做到這一點。

回答

1

我通常把一個IF在ORDER BY是否需要此行爲:

SELECT street, city FROM (
    SELECT 'street 1' street, 'city 1' city 
     UNION ALL 
    SELECT 'street 2' street, 'city 2' city 
     UNION ALL 
    SELECT NULL street, 'city 1' city 
     UNION ALL 
    SELECT NULL street, 'city 2' city 
) AS A 
ORDER BY city, IF(street IS NULL, 1, 0); 

enter image description here

這是否解決您的問題?

(註釋之後顯然不是,這個怎麼樣:)

CREATE TEMPORARY TABLE cityTable SELECT 'city1' cityCol UNION ALL SELECT 'city2' UNION ALL SELECT 'city3'; 

SET @Search = 'street1 city1'; 

SELECT @Search, cityCol FROM cityTable WHERE @Search LIKE CONCAT('%', cityCol, '%'); 

如果沒有,請張貼一些示例數據,並在你的問題的問題的一個例子。

問候,

詹姆斯

+0

感謝親愛的,但是用戶輸入完整的地址,當他們進行搜索,比如我上面規定,所以我怎麼可以從中找出城市,它與城市領域進行比較。因爲每次搜索字符串的不同組合,google api都不會給我提供城市名稱。 –

+0

好的,請參閱 –

+0

以上的編輯謝謝,我試過你給出的解決方案,它對我來說很有用。 –

相關問題