我的结构解释如下:
我有 2 个表,alerts_conditions
和 alerts_list
我想要做的是一个将在两个表中查找的查询,但有时信息只会从一个表中收集,有时会从两个表中收集。
我的查询查看是否在 alerts_conditions
和/或 alerts_list
上找到了 id
。
id
始终在 alerts_list
表中找到。
因此,如果 id
在 alerts_conditions
上找到,则意味着它在 alerts_list
中也有一行。
但是,如前所述,在某些情况下,id
只能在 alerts_list
上找到。
现在,如果 id
仅在 alerts_list
上找到,我会得到混合数据。
我的问题是
- 如何更改我的查询,以便当在
alerts_list
上仅找到 id 时,alerts_conditions
的列显示为空? - 当
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/