全体として、私がやろうとしているのは、過去 30 日間にサービスに現れなかった最新の顧客レコードのみを表示し、現在の日付に従って最新のサービス レコードのみを表示することです。
2 つのテーブルがあり、1 対多の関係で構造化されています。
最初のテーブルは table: "customer" です
|---------------------------------------------------|
| ID | FirstName | LastName | Male | Female | Phone |
|---------------------------------------------------|
35 John Mulling True False 905
84 Mike Stone True False 416
90 Cassie Daniels False True 315
2 番目のテーブルは「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
このリストは、従業員が週に 1 回または月に 1 回、顧客をフォローアップするためにチェックする次のクエリを介してユーザー インターフェースでフィルタリングされます (顧客に電話をかけたら、従業員は「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 日以上前の部分を処理しますが、リスト内の古いカスタマー サービス エントリをシステムから削除する必要があります。
試み:
そのため、従業員のすべての古いサービス エントリのこのリストをクレンジングするユーザー インターフェイスの読み込み時に更新クエリを実行したいと考えています。
最新の日付のものを除いて、各顧客のサービス テーブルの true/false フィールド (followup30) のすべてのエントリをクエリで true に設定するだけです。
これは私がこれまでに持っているものですが、各顧客を個別に扱うとは思わず、構文の問題がいくつかある可能性があります.
UPDATE tblservice
SET followup30='Yes'
WHERE (SELECT Timing FROM tblservice WHERE Timing <> (SELECT MAX(Timing)
FROM tblservice));
どんな助けでも大歓迎です、ありがとう