PHP MYSQL"高级"加入查询

时间:2012-02-27 10:26:20

标签: php mysql

我有一个显示事件列表的网页。默认情况下,正在显示所有事件。用户可以使用输入字段来过滤该列表。他可以输入city_codecity_namecity_state。下面是我的数据库表及其内容:

地点

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查询。

我的问题是我知道如何过滤表格,我知道如何进行连接查询,但不知道如何将它们“合在一起”。我希望有人能帮帮忙。提前感谢您的回复。干杯。马克。

1 个答案:

答案 0 :(得分: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 = ...
)

但是你真的应该在发布之前试一试。