我有两张表,一张称为“用户”,一张称为“项目”。我希望从现在 3 天内字段 users.eventdate 的用户那里编译一个 ID 列表。为了让事情变得更复杂,我还想看看 items.startingdate 是否在现在的 3 天内。
因此,如果 users.eventdate 在现在 3 天内,或者在现在 3 天内有 item.startdate,则返回 users.ID。用户和项目之间的关系是 users.ggProjectId 和 items.uID。
我目前有:
$strSQL = "SELECT users.ID, users.ggProjectId, users.timezone, users.ggTimestamp, users.slug, items.uID
FROM items
JOIN users ON users.ggProjectId = items.uID
WHERE ( users.eventdate <= DATE( NOW( ) + INTERVAL 2 DAY )
AND users.eventdate >= DATE( NOW( ) - INTERVAL 2 DAY )) OR
( items.startingtime <= DATE( NOW( ) + INTERVAL 2 DAY )
AND items.startingtime >= DATE( NOW( ) - INTERVAL 2 DAY ))
GROUP BY users.ggProjectId";
问题是,如果没有用户记录的项目,那么即使我需要它,我也不会得到它,因为 eventdate 在时间范围内。我认为是 JOIN 杀死了它。