在这种情况下:我有相关行的表格......
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,但我甚至不确定是否可以完成。
我有什么想法可以做到这一点?
答案 0 :(得分:0)
为什么你也不能加入考勤表?
如果你这样做,请通过GROUP BY contact_id获取MAX(时间戳)。你可以用它来回答你的第一个问题:
MAX(timestamp) >= datesub(now(), interval 6 month)
和你的第二个:
MAX(timestamp) < datesub(now(), interval 6 month)
请注意,您的第二个问题是询问之前参加过某个活动的人,因此您可以保证在考勤表中存在一行。如果您没有说明,并且联系人可能没有出勤记录,您需要使用外部联接。
祝你好运。