SQL需要通过“;在“;以及“;在“;日期使用第三张表


SQL need to separate results by "before" and "after" date using a third table

情况如下:我有相关行所在的表。。。

contact
-- contact_id
event
-- event_id
-- event_group_id
groups
-- group_id
groupmember
-- group_id
-- contact_id
attendance
-- contact_id
-- group_id
-- event_id
-- timestamp (current timestamp)

//Query the database for group members 
$result = mysql_query(
"SELECT contact.contact_id, contact.first, contact.last, 
  contact.home_phone, contact.mobile_phone, contact.email, contact.address, 
  contact.city, contact.state, contact.zip 
FROM contact 
INNER JOIN groupmember ON contact.contact_id = groupmember.contact_id 
WHERE groupmember.group_id = '$groupid' 
ORDER BY last
    "); 

我想做的是通过检查名为"出席率"的表来修剪这些结果,并只显示过去6个月内参加过"$group"组织赞助的活动的结果。

然后,在显示这些结果后,在页面底部生成另一个列表,显示那些"不活跃"的联系人,因为他们上一次参加由"$group"赞助的活动是在6个多月前。我假设另一个WHERE语句必须在考勤表中附加一个INNER JOIN,但我甚至不确定这是否可以做到。

你知道我该怎么做吗?

为什么不能加入考勤表?

如果您这样做了,请使用GROUP BY contact_id并获取MAX(时间戳)。你可以用它来回答你的第一个问题:

 MAX(timestamp) >= datesub(now(), interval 6 month)

第二个:

 MAX(timestamp) < datesub(now(), interval 6 month)

请注意,您的第二个问题询问的是以前参加过活动的人,因此您可以保证出席表中存在一行。如果您没有说明这一点,并且联系人可能没有出席记录,那么您需要使用OUTER JOIN。

祝你好运。