PHP MYSQL "Advanced"JOIN 查询

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

我的问题是我知道如何过滤表,我知道如何进行联接查询,但不知道如何使两者“在一起”。我希望有人能帮帮忙。预先感谢您的回复。干杯。马克。

最佳答案

您是否尝试过同时使用两者?您应该会发现它确实如您所愿。您正在寻找的语法是以下之一

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/

相关文章:

php - 使用带有 mkdir 路径的 php 保存 mysql 备份数据库

php - 带条件的 laravel 查询生成器

mysql - 触发器不起作用,插入时插入另一个表时出错

php - Nginx/PHP-FPM 504 网关超时

javascript - 在其他 php 文件中使用 Javascript 显示表单结果

php - 如何在mysql中搜索?

MySQL 在序列化数据中搜索和替换撇号

Mysql多实例无法通过socket连接

php - 如果当天不存在记录则获取 0

mysql - 在 phpMyAdmin 和 MySQL 中如何将两个表中的选定字段添加到其他表