2016-05-24 54 views
0

嗨,我有3個表格:城市,地區,子位置,我不知道用戶正在搜索哪一個,所以我想立即搜索所有表格,還需要以某種方式指示是因爲返回的區域或城市或子位置。MySQL搜索在多個表中

表stucture:

Cities: 
id int 
city_name varChar 

Areas: 
id int 
area_name varChar 

Sub_locations: 
id int 
sub_location_name varChar 

所以只需要在CITY_NAME搜索,AREA_NAME和sub_location_name

我想使用全文search.Also我使用Laravel 4,所以你可以在雄辯查詢。請幫助,從來沒有處理過這種邏輯。謝謝。

+0

你可以使用聯合 –

回答

1

您可以從表中按類型列這些結果來自何處嘗試像

$keyword = $_POST['your_search_input_field']; 

$query = "(SELECT city_name FROM Cities WHERE city_name LIKE '%" . 
     $keyword . "%') 
     UNION 
     (SELECT area_name FROM Areas WHERE area_name LIKE '%" . 
     $keyword . "%') 
     UNION 
     (SELECT sub_location_name FROM Sub_locations WHERE sub_location_name LIKE '%" . 
     $keyword . "%')"; 

mysql_query($query); 
+0

嗨,謝謝你的工作,但由於某種原因,它總是表明它是['city_name'],即使結果來自Area表,也不會輸出ids – Mikail

+0

is city_name is對於sublocation呢?對於ID ...添加像=選擇ID,城市名稱從城市....選擇ID,面積名稱從地區......選擇ID,SUB_LOCATIONS sub_location_name ...並與結果一起回顯... –

+0

謝謝,我做了一個工作,我爲每個表添加一個列,如'table_name'來表示結果來自哪裏,否則由於某種原因它總是顯示爲城市,所以我只需要指出每個結果來自哪裏,謝謝 – Mikail

1

使用此

SELECT `city_name` as `area` ,'city' as type FROM `cities` where city_name 
'your like conditions' 
union 
select `area_name` as `area`, 'area' as type from `areas` where 'your like conditions' 
union 
select `sub_location_name` as `area`, 'sublocation' as type where 'your like conditions' 
from `Sub_locations` 

在這裏,你會發現結果和排序也。