我有一个显示事件列表的网页。默认情况下会显示所有事件。用户可以使用输入字段来过滤该列表。他可以输入city_code
、city_name
或city_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
查询。
我的问题是我知道如何过滤表,我知道如何进行联接查询,但不知道如何使两者“在一起”。我希望有人能帮帮忙。预先感谢您的回复。干杯。马克。
最佳答案
您是否尝试过同时使用两者?您应该会发现它确实如您所愿。您正在寻找的语法是以下之一
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 = ...
)
但实际上,您应该在在这里发帖之前尝试一下。
关于PHP MYSQL "Advanced"JOIN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9463432/