Php MYSQL:只返回两个表的匹配项,没有冲突
我想知道这是否可以只通过一个查询实现 你看,我有这个表user\u leads,我需要将这个表连接到两个表中:分别在formid和serviceid列上的lead\u forms和user\u services 此查询的结果应仅返回在用户\服务或潜在客户\表单中具有匹配项的行。返回的行中至少有一行不匹配 由于这两列的性质,它们都可以设置,有时一列被设置,另一列为空。通常,这两张桌子中的任何一张都不匹配 问题是,如果我做一个像这样的内部连接Php MYSQL:只返回两个表的匹配项,没有冲突,php,mysql,Php,Mysql,我想知道这是否可以只通过一个查询实现 你看,我有这个表user\u leads,我需要将这个表连接到两个表中:分别在formid和serviceid列上的lead\u forms和user\u services 此查询的结果应仅返回在用户\服务或潜在客户\表单中具有匹配项的行。返回的行中至少有一行不匹配 由于这两列的性质,它们都可以设置,有时一列被设置,另一列为空。通常,这两张桌子中的任何一张都不匹配 问题是,如果我做一个像这样的内部连接 FROM `user_leads` INNER JOIN
FROM `user_leads`
INNER JOIN lead_forms ON lead_forms.formid = user_leads.formid
但是,你也要这样做
INNER JOIN user_services ON user_services.serviceid = user_leads.serviceid
它将返回与lead_表单的所有匹配项,并在应同时返回与user_服务的某些匹配项时忽略它们。如果我做了下面的事情
FROM `user_leads`
WHERE user_leads.formid > 0 OR user_leads.serviceid > 0
LEFT OUTER JOIN user_services ON user_leads.serviceid = user_services.serviceid
LEFT OUTER JOIN lead_forms ON user_leads.serviceid = lead_forms.formid
它返回两个表中的所有匹配项,就像我想的那样,但由于它是外部联接,因此它还返回来自用户\服务或lead\表单中不匹配的用户\潜在客户的行,从而导致错误
我不想检查匹配项,除非MYSQL真的没有其他方法。因此,如果你知道一个正确的方法来做这件事,你的帮助是感激的
编辑:供参考
这就是有效的方法如果您添加一个条件,使至少1个联接列不为null,则
左侧的
联接将执行您想要的操作:
LEFT OUTER JOIN user_services ON user_leads.serviceid = user_services.serviceid
LEFT OUTER JOIN lead_forms ON user_leads.serviceid = lead_forms.formid
WHERE user_services.serviceid IS NOT NULL OR lead_forms.formid IS NOT NULL