总的来说,我要做的只是显示最近30 天内未出现服务的最新客户记录,并且仅显示根据当前日期的最新服务记录。
有两个表,它们以一对多的关系构造。
第一个表是表:“客户”
|---------------------------------------------------|
| ID | FirstName | LastName | Male | Female | Phone |
|---------------------------------------------------|
35 John Mulling True False 905
84 Mike Stone True False 416
90 Cassie Daniels False True 315
第二个表是表:“tblservice”
|-------------------------------------------------------------------------|
| ServiceID | Followup30 | Timing | Service1 | Total | customerID |
|-------------------------------------------------------------------------|
1 Yes 01/02/2012 Serv-001 120.00 35
2 No 02/05/2012 Serv-003 500.00 84
3 No 03/25/2012 Serv-008 85.00 90
此列表通过以下查询在用户界面中过滤,员工每周或每月检查一次以跟进客户(一旦致电客户,员工将“followup30”复选框设置为“是” ):
SELECT customer.FirstName, customer.LastName, customer.Male, customer.Female,
customer.Phone, tblservice.Followup30, tblservice.Timing, tblservice.Service1,
tblservice.Total
FROM customer
INNER JOIN tblservice
ON customer.ID=tblservice.customerID
WHERE (((tblservice.Followup30)=No)
AND ((tblservice.Timing)<=DateAdd("d",-30,Date()))
AND ((customer.Phone) Is Not Null))
ORDER BY tblservice.Timing;
然而问题似乎是当客户在 20 天内进来时,他/她之前的条目仍在系统中,需要跟进。(我不想只显示最近的旧服务记录,如果它超过 30 天)
UI 中的上述查询将处理 30 天或更早的部分,但是我需要清理列表中旧客户服务条目的系统。
尝试:
所以我想在加载用户界面时执行更新查询,这将清除员工所有旧服务条目的列表。
我只希望查询将每个客户的服务表中的真/假字段(followup30)的所有条目设置为真,但最近日期除外。
这是我到目前为止所拥有的,但我认为它不会单独对待每个客户,并且可能存在一些语法问题。
UPDATE tblservice
SET followup30='Yes'
WHERE (SELECT Timing FROM tblservice WHERE Timing <> (SELECT MAX(Timing)
FROM tblservice));
任何帮助将不胜感激,谢谢