2011-05-20 78 views
0

我有點卡在SQL查詢。搜索查詢 - 郵編,公司名稱或地址

用戶應該能夠搜索郵政編碼,公司名稱或位置

我有以下表格:

公司表

companyid |  name  | location 
     1  Shop One   New York 
     2  Shop Two   France 

postcode_areas表

postcode | companyid 
    BB1  1 
    BB3  1 
    BB1  2 

所以如果用戶輸入BB1,那麼它應該顯示Shop One和Shop Two的結果。

如果用戶輸入公司或地點的名稱 - 它只會從公司表中搜索。

+0

「如果用戶輸入公司或地點的名稱 - 它只會從公司表格中搜索」 - 所以您想要決定用戶輸入的郵資是否是手前的郵政編碼?在這種情況下,您應該爲您的問題添加另一個標籤。你建議好像你想在SQL中做所有事情,但是然後說它只是從公司表中搜索。您應該使用您正在開發的任何語言,並檢查搜索模式以確定它是否是有效的zip/post。 – Layke 2011-05-20 09:30:51

回答

1

可能:

select distinct c.* 
from company c 
join postcode_areas p on p.company_id = c.company_id 
where c.name like <input> 
or c.location like <input> 
or p.postcode like <input> 
2

使用聯接兩個表,做一個OR搜索上的所有字段:

SELECT DISTINCT c.* FROM company c JOIN postcode_areas p USING (companyid) 
WHERE c.name = "$QUERY" OR c.location = "$QUERY" OR p.postcode = "$QUERY"; 

您可以使用LIKE "%$QUERY%"以獲取部分查詢結果。