>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 거래가 없는 날을 포함하여 지난 7일 동안의 거래 데이터를 검색하는 방법은 무엇입니까?

MySQL에서 거래가 없는 날을 포함하여 지난 7일 동안의 거래 데이터를 검색하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-31 14:38:10875검색

How to Retrieve Transaction Data for the Last 7 Days, Including Days with No Transactions in MySQL?

단일 테이블의 빈 행을 포함하여 지난 7일의 행 선택

MySQL 데이터베이스에서 다음 위치에서 트랜잭션을 검색하려고 합니다. 지난 7일 동안의 일일 총 판매량을 계산합니다. 그러나 특정 날짜에 대해 사용 가능한 데이터가 없더라도 결과 집합에 빈 행이 포함되도록 하려고 합니다.

이 문제를 해결하려고 시도했지만 쿼리에서는 다음이 포함된 날짜만 검색합니다. 업무. 원하는 결과를 얻으려면 접근 방식을 수정해야 합니다.

해결책:

해결책에는 하위 쿼리를 활용하여 지난 7일 내의 날짜 목록을 생성하는 것이 포함됩니다. . 그런 다음 이 목록을 거래 테이블과 결합하여 포괄적인 결과 집합을 만듭니다.

  1. 날짜 목록 생성:
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()
  1. 거래에 참여 테이블:
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
  1. 그룹 및 주문 결과:
GROUP BY t1.purchase_date
ORDER BY t1.purchase_date DESC

이 쿼리는 생성된 날짜를 다음과 결합합니다. 트랜잭션 테이블을 사용하면 트랜잭션이 없는 날에도 빈 행이 포함됩니다. 최종 결과 세트에는 지난 7일 동안의 구매 날짜와 총 판매 금액이 표시되며, 빈 행은 해당 날짜에 거래가 없음을 나타냅니다.

위 내용은 MySQL에서 거래가 없는 날을 포함하여 지난 7일 동안의 거래 데이터를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.