私は2つのテーブルを持っています:
purchase_mis(id, user_id, total_purchased, date)
daily_purchase(id, user_id, product_id, paid_amount, purchase_date)
毎晩実行される CRON ファイルがあります。「daily_purchase」テーブルからの毎日の購入をカウントし、「purchase_mis」に挿入を実行します。
例えば:
SELECT
COUNT(*) AS purchase_count,
purchase_date
FROM daily_purchase
GROUP BY user_id;
これにより、すべてのユーザーの purchase_count が返され、「purchase_mis」テーブルに挿入されます。
INSERT INTO
purchase_mis(user_id, total_purchased, date)
VALUES
('2', 'purchase_count', 'purchase_date');
ただし、挿入する前に、ある日付「purchase_date」の user_id = 2 の購入情報が既に挿入されているかどうかを確認する必要があるため、再度挿入する必要はありません。
以下のクエリのようなものが必要です。
INSERT INTO
purchase_mis(user_id, total_purchased, date)
VALUES
('2', 'purchase_count', 'purchase_date')
WHERE date NOT EXISTS (SELECT date FROM purchase_mis WHERE user_id = '2');