2012-02-27 165 views
0

我有一個顯示事件列表的網頁。默認情況下,所有事件都正在顯示。用戶可以使用輸入字段來過濾該列表。他可以輸入city_codecity_namecity_state。在這裏我下面的數據庫表和它們的內容:PHP MYSQL「高級」JOIN查詢

位置

city_code (pk) 
city_name 
city_state 

活動

event_id (pk) 
event_name 
city_code(foreign key) 

我的想法,以達到我想要的是:
1 /過濾器的位置表基於輸入值:

(SELECT * FROM locations WHERE city_code LIKE input OR city_name LIKE input or city_state LIKE input). 

2 /在事件表和過濾的位置表之間進行查詢JOIN

我的問題是,我知道如何過濾表,我知道如何進行連接查詢,但不知道如何使兩個「在一起」。我希望有人能幫幫忙。預先感謝您的回覆。乾杯。馬克。

回答

2

您是否嘗試過使用兩者?你應該發現它的確如你所願。你正在尋找的語法是以下

SELECT 
    ... 
FROM events 
INNER JOIN locations 
ON locations.city_code = events.city_code 
AND (
    locations.city_code = ... 
    OR 
    locations.city_name = ... 
    OR 
    locations.city_state = ... 
) 

還是略效率較低,但同樣有效

SELECT 
    ... 
FROM events 
INNER JOIN locations 
ON locations.city_code = events.city_code 
WHERE (
    locations.city_code = ... 
    OR 
    locations.city_name = ... 
    OR 
    locations.city_state = ... 
) 

不過說真的,你應該給它在這裏發帖前一試的。

+0

你好西蒙。感謝您的幫助。我嘗試了很少的知識,但沒有提供這種語法。再次謝謝你。 – Marc 2012-02-27 10:37:44