1

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

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,但我什至不确定是否可以这样做。

有什么想法可以做到这一点吗?

4

1 回答 1

0

为什么你也不能加入考勤表?

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

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

你的第二个:

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

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

祝你好运。

于 2012-09-11T15:58:47.193 回答