Mysql sql查询联接左3个表

Mysql sql查询联接左3个表,mysql,sql,date,join,where-clause,Mysql,Sql,Date,Join,Where Clause,有点不对劲,但我不明白 我想列出T表evinvite中列出的所有事件,这些事件在evgroups中列出,其日期不超过7天,并且在evfeedback表中没有任何反馈 SELECT t1.evid FROM evinvite t1 LEFT JOIN evfeedback t2 ON t2.evid = t1.evid WHERE t2.evid IS NULL AND userid ='".$uzer."' AND status=9 LEFT JOIN evgroups t

有点不对劲,但我不明白

我想列出T表
evinvite
中列出的所有事件,这些事件在
evgroups
中列出,其日期不超过7天,并且在
evfeedback
表中没有任何反馈

SELECT 
  t1.evid
FROM 
  evinvite t1
LEFT JOIN evfeedback t2 
  ON t2.evid = t1.evid
  WHERE t2.evid IS NULL AND userid ='".$uzer."' AND status=9
LEFT JOIN evgroups t3
  ON t3.evid = t1.evid
  WHERE t3.data >= DATE(NOW()) + INTERVAL -7 DAY AND t3.data <  NOW() + INTERVAL 0 DAY
选择
t1.evid
从…起
埃文维特t1
左连接EVT2
在t2.evid=t1.evid上
其中t2.evid为NULL,userid=“$uzer.”,status=9
左连接EVT3组
在t3.evid=t1.evid上
其中t3.data>=日期(现在())+间隔-7天,t3.data<现在()+间隔0天

您正在混合
WHERE
上的
子句

要筛选出具有反馈的事件,您需要
WHERE
子句中的
t2.evid为NULL
条件

此外,您可能希望在事件组上使用
内部联接
,而不是
左联接

尝试:


您可以发布您的表结构吗?您不能有2个
where
子句。每个
SELECT
只能有一个
where
子句。你有两个。不清楚你想做什么。您可能希望在
s上的相应的
中有来自
WHERE
s的谓词。另一个选项是子查询或整个
SELECT
的通用
WHERE
子句。如需进一步建议,请编辑问题并将表格结构添加为
CREATE table
statements,将样本数据插入到
语句中并获得所需结果。
SELECT 
    t1.evid
FROM 
    evinvite t1
    LEFT JOIN evfeedback t2 
        ON t2.evid = t1.evid
        AND userid ='".$uzer."' 
        AND status=9
    INNER JOIN evgroups t3
        ON t3.evid = t1.evid
        AND t3.data >= DATE(NOW()) + INTERVAL -7 DAY
    AND t3.data >= DATE(NOW()) + INTERVAL -7 DAY
WHERE 
    t2.evid IS NULL