Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL:只返回两个表的匹配项,没有冲突_Php_Mysql - Fatal编程技术网

Php MYSQL:只返回两个表的匹配项,没有冲突

Php MYSQL:只返回两个表的匹配项,没有冲突,php,mysql,Php,Mysql,我想知道这是否可以只通过一个查询实现 你看,我有这个表user\u leads,我需要将这个表连接到两个表中:分别在formid和serviceid列上的lead\u forms和user\u services 此查询的结果应仅返回在用户\服务或潜在客户\表单中具有匹配项的行。返回的行中至少有一行不匹配 由于这两列的性质,它们都可以设置,有时一列被设置,另一列为空。通常,这两张桌子中的任何一张都不匹配 问题是,如果我做一个像这样的内部连接 FROM `user_leads` INNER JOIN

我想知道这是否可以只通过一个查询实现

你看,我有这个表user\u leads,我需要将这个表连接到两个表中:分别在formid和serviceid列上的lead\u forms和user\u services

此查询的结果应仅返回在用户\服务或潜在客户\表单中具有匹配项的行。返回的行中至少有一行不匹配

由于这两列的性质,它们都可以设置,有时一列被设置,另一列为空。通常,这两张桌子中的任何一张都不匹配

问题是,如果我做一个像这样的内部连接

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