我的结构解释如下:
我有2个表,alerts_list
和id
我想要做的是查询将在两个表中查看,但有时信息将仅从一个表中收集,有时它将来自两个表。
我的查询查看alerts_conditions
和/或alerts_list
上是否找到了id
。
始终在alerts_list
表格中找到id
。
因此,如果在alerts_conditions
上找到alerts_list
,则表示它在id
中也有一行。
但是,如前所述,有些情况alerts_list
只会在id
上找到。
目前,如果只在alerts_list
上找到alerts_list
,我会收到混合数据。
我的问题是
alerts_conditions
上的ID 时,id
的列将显示为空?id
以从两者获取数据时?在这种情况下,数字50是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
注意
{{1}}与此问题无关,必须将其排除在任何条款之外。
答案 0 :(得分:0)
SELECT al.*, ac.*
FROM alerts_list al
LEFT JOIN alerts_conditions ac ON (al.alerts_id=ac.alerts_conditions_alert)
WHERE al.alerts_id=50
AND (
ac.alerts_conditions_alert is NULL
OR
ac.company_id = 1
)
LIMIT 1
如果alerts_conditions
中没有其他信息,则其字段将等于NULL,否则将检查company_id是否匹配。
答案 1 :(得分:0)
写这个的正确方法是将条件放在alerts_conditions
子句中的on
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 ;