SQL连接问题PHP

SQL连接问题PHP,php,mysql,sql,Php,Mysql,Sql,我正在尝试执行一个SQL连接,以从一个表中返回记录,用于在第二个表中没有与第一个表中的记录对应的条目的用户。我正在尝试的查询如下,我认为应该返回我想要的结果,但它给出了一个语法错误: $query = "SELECT * FROM `suppliers` LEFT OUTER JOIN `matches` ON suppliers.supplierid = matches.supplier_id WHERE '" . $_SESSION['userEmail'] . "' NOT IN matc

我正在尝试执行一个SQL连接,以从一个表中返回记录,用于在第二个表中没有与第一个表中的记录对应的条目的用户。我正在尝试的查询如下,我认为应该返回我想要的结果,但它给出了一个语法错误:

$query = "SELECT * FROM `suppliers` LEFT OUTER JOIN `matches` ON suppliers.supplierid = matches.supplier_id WHERE '" . $_SESSION['userEmail'] . "' NOT IN matches.user";
有什么想法或建议吗?我试图从上面实现的是只显示登录用户未将供应商记录标记为已查看的结果

短暂性脑缺血发作


未正确添加not in子句。

更正where子句:

$query = "SELECT * FROM `suppliers` LEFT OUTER JOIN `matches` ON suppliers.supplierid = matches.supplier_id WHERE matches.user NOT IN ('" . $_SESSION['userEmail'] . "')  "; 
或者,如果是单个值,则可以使用
=而不是
不在

$query = "SELECT * FROM `suppliers` LEFT OUTER JOIN `matches` ON suppliers.supplierid = matches.supplier_id WHERE matches.user != '" . $_SESSION['userEmail'] . "' "; 

您应该交换WHERE条件,并用括号()修剪


你的逻辑不正确。您可以使用
左联接
,但查询应如下所示:

SELECT s.*
FROM suppliers s LEFT OUTER JOIN 
     matches m
     ON m.supplierid = s.supplier_id AND
        m.user IN ('" . $_SESSION['userEmail'] . "')
WHERE m.supplierid IS NULL;
注意:此行可能导致语法错误或意外结果:

        m.user IN ('" . $_SESSION['userEmail'] . "')

您需要查看变量替换后的语法,以找出其中一个。这个答案解决了查询的逻辑问题,因此当语法固定时,它将执行您实际需要的操作。

您的where子句不正确。我明白了。你过去的问题没有解决吗?如果是,则应将其标记为已解决。你也没有在给出的任何答案下发表评论。这是一个问题,它值得回答,就像你的问题一样。那么,你说呢?@FahadAnjum,你是为数不多的智者之一;-)
SELECT s.*
FROM suppliers s LEFT OUTER JOIN 
     matches m
     ON m.supplierid = s.supplier_id AND
        m.user IN ('" . $_SESSION['userEmail'] . "')
WHERE m.supplierid IS NULL;
        m.user IN ('" . $_SESSION['userEmail'] . "')