php - 如何编辑我的查询以生成正确的 IF/Join 语句?

标签 php mysql sql

我的结构解释如下: 我有 2 个表,alerts_conditionsalerts_list

我想要做的是一个将在两个表中查找的查询,但有时信息只会从一个表中收集,有时会从两个表中收集。

我的查询查看是否在 alerts_conditions 和/或 alerts_list 上找到了 id

id 始终在 alerts_list 表中找到。 因此,如果 idalerts_conditions 上找到,则意味着它在 alerts_list 中也有一行。

但是,如前所述,在某些情况下,id 只能在 alerts_list 上找到。

现在,如果 id 仅在 alerts_list 上找到,我会得到混合数据。 我的问题是

  1. 如何更改我的查询,以便当在 alerts_list找到 id 时,alerts_conditions 的列显示为空?
  2. id两个 表中都找到时从两个表中获取数据?

在这种情况下,数字 50 是 id

SELECT * 
FROM   alerts_conditions, 
       alerts_list 
WHERE  (alerts_conditions.alerts_conditions_alert = 50 OR alerts_list.alerts_id=50)
       AND alerts_conditions.company_id = 1 
LIMIT  1 

注意

company_id 与问题无关,必须从任何子句中删除。

最佳答案

正确的写法是将条件放在 on 子句中的 alerts_conditions

SELECT ac.*, al.*
FROM alerts_list al LEFT JOIN
     alerts_conditions ac
     ON ac.alerts_conditions_alert = al.alerts_id AND
        ac.company_id = 1 
WHERE al.alerts_id = 50
LIMIT 1 ;

关于php - 如何编辑我的查询以生成正确的 IF/Join 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45472949/

相关文章:

Php MySQL 查询在资源有限的托管中内存不足

php - 使用 PDO 和 MySQL 更新查询

sql - 具有许多表的 PostgreSQL 最佳 SELECT 查询

mysql - 如何使用非外键字段连接包含未找到匹配项的行的表

php - 带有条件的mysql查询计数,结果为数字

php - PostgreSQL 参数绑定(bind)与 JSONB 运算符冲突

mysql - 为什么我的删除内部联接不起作用?

php - UNION ALL 查询不匹配的表

mysql - 如何获取用户最后插入的值?

mysql 脚本 - 数学解决方案