ホームページ > データベース > mysql チュートリアル > 過去 7 日間の毎日のトランザクションを表示する MySQL クエリに空の行を含める方法

過去 7 日間の毎日のトランザクションを表示する MySQL クエリに空の行を含める方法

Linda Hamilton
リリース: 2024-12-29 18:13:09
オリジナル
529 人が閲覧しました

How to Include Empty Rows in a MySQL Query Showing Daily Transactions for the Last 7 Days?

過去 7 日間の空の行を MySQL 単一テーブル クエリに統合する

このクエリでは、過去 7 日間のすべてのトランザクションを取得することを目的としています。売上の記録がない日も結果に含まれます。この結果を達成するために、2 つの別々のクエリを組み合わせる手法を利用します。

まず、ネストされた SELECT ステートメントを使用して、過去 7 日間内のすべての日付を列挙します。このクエリは、トランザクション データの基礎として機能する日付のリストを効果的に生成します。

SELECT DATE_FORMAT(a.Date,'%Y-%m-%d') as purchase_date,
'0' as  amount
FROM (
  SELECT curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
  FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
  CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
  CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
) a
WHERE a.Date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
ログイン後にコピー

次に、この包括的な日付リストと、トランザクション テーブルから毎日の売上データを集計するクエリを組み合わせます。この結合により、記録されたトランザクションとアクティビティのない日付の空の行の両方が確実に含まれるようになります。

LEFT JOIN
(
  SELECT DATE_FORMAT(purchase_date, '%Y-%m-%d') as purchase_date,
  COALESCE(SUM(amount), 0) AS amount
  FROM transactions
  WHERE purchase_date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
  AND vendor_id = 0
  GROUP BY purchase_date
)t2
ON t2.purchase_date = t1.purchase_date
GROUP BY t1.purchase_date
ORDER BY t1.purchase_date DESC
ログイン後にコピー

これら 2 つのクエリをシームレスに統合することで、指定された範囲内のすべての日付を時系列にリストする単一のテーブルを効果的に構築します。対応する販売データ、またはトランザクションが発生しなかった場合はゼロになります。

以上が過去 7 日間の毎日のトランザクションを表示する MySQL クエリに空の行を含める方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート