Mysql sql查询联接左3个表
有点不对劲,但我不明白 我想列出T表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
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