SQL需要使用第三个表将结果分隔为“之前”和“之后”日期

时间:2012-09-11 15:24:02

标签: php mysql

在这种情况下:我有相关行的表格......

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
    "); 

我想做的是通过查看名为"出勤率"的表格来削减这些结果。并且仅显示参加由该组' $ group'赞助的活动的结果。在过去的6个月里。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

和你的第二个:

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

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

祝你好运。