Php 如何编辑我的查询以生成正确的IF/Join语句?
我的结构解释如下: 我有两个表,Php 如何编辑我的查询以生成正确的IF/Join语句?,php,mysql,sql,Php,Mysql,Sql,我的结构解释如下: 我有两个表,alerts\u conditions和alerts\u list 我想做的是一个查询,它将在两个表中查找,但有时信息将仅从一个表中收集,有时信息将从两个表中收集 我的查询查看是否在警报\u条件和/或警报\u列表上找到了id id始终位于警报列表表中。 因此,如果在alerts\u conditions上找到id,这意味着它在alerts\u列表中也有一行 但是,如前所述,在某些情况下,id只能在警报列表中找到 目前,如果仅在alerts\u列表中找到id,我会得
alerts\u conditions
和alerts\u list
我想做的是一个查询,它将在两个表中查找,但有时信息将仅从一个表中收集,有时信息将从两个表中收集
我的查询查看是否在警报\u条件
和/或警报\u列表
上找到了id
id
始终位于警报列表
表中。
因此,如果在alerts\u conditions
上找到id
,这意味着它在alerts\u列表中也有一行
但是,如前所述,在某些情况下,id
只能在警报列表中找到
目前,如果仅在alerts\u列表中找到id
,我会得到混合数据。
我的问题是
如何更改查询,以便在警报\u列表
上仅找到id时,警报\u条件
的列显示为空
当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\u id
与问题无关,必须排除在任何条款之外
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
如果警报条件中没有其他信息,则其字段将等于NULL,否则将检查公司id是否匹配
如果警报条件中没有其他信息,则其字段将等于NULL,否则将检查公司id是否匹配。正确的写入方法是在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 ;
正确的编写方法是在on
子句中将条件置于alerts\u 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 ;
您好,我得到这个:SQL错误(1064):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用第3I行“right JOIN alerts\u conditions ac ON(al.alerts\u id=ac.alerts\u conditions\u alert)WH”附近的正确语法。我已通过添加更清晰的描述更新了我的问题。目前,如果该id仅在警报列表中找到,我会得到混合数据。我的问题是1。如何更改查询,以便在“警报”列表中仅找到id时,警报条件的列显示为空?2.当在两个表中都找到id以从两个表中获取数据时,您是否尝试了我的查询?我相信它回答了最新的问题,我已经测试了你的答案。如果id
在两个表上,则它可以工作。否则,如果它仅在警报列表上
我得到临时输出更新,请再次检查,我得到:SQL错误(1064):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用第3I行“right JOIN alerts\u conditions ac ON(al.alerts\u id=ac.alerts\u conditions\u alert)WH”附近的正确语法。我已通过添加更清晰的描述更新了我的问题。目前,如果该id仅在警报列表中找到,我会得到混合数据。我的问题是1。如何更改查询,以便在“警报”列表中仅找到id时,警报条件的列显示为空?2.当在两个表中都找到id以从两个表中获取数据时,您是否尝试了我的查询?我相信它回答了最新的问题,我已经测试了你的答案。如果id
在两个表上,则它可以工作。否则,如果它仅在警报列表上
我得到临时输出更新,请再次检查