> 데이터 베이스 > MySQL 튜토리얼 > 단일 MySQL 테이블에 빈 행이 있는 지난 7일간의 트랜잭션을 검색하는 방법은 무엇입니까?

단일 MySQL 테이블에 빈 행이 있는 지난 7일간의 트랜잭션을 검색하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-31 06:45:10
원래의
857명이 탐색했습니다.

How to Retrieve Last 7 Days' Transactions with Empty Rows in a Single MySQL Table?

지난 7일간의 거래를 검색하고 MySQL 단일 테이블에 빈 행 포함

지난 7일간의 거래를 추출하는 문제를 해결하려면 MySQL 데이터베이스에서 빈 행을 캡처하여 다음을 탐색합니다. 접근 방식:

  1. 날짜 범위 생성:
    다음 쿼리를 사용하여 지난 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()
    로그인 후 복사
  2. 거래 참여 테이블:
    다음으로 생성된 날짜 목록을 거래 테이블과 결합하여 해당 판매 금액을 얻습니다(있는 경우).

    SELECT t1.purchase_date,
    coalesce(SUM(t1.amount+t2.amount), 0) AS amount
    from
    로그인 후 복사
    (
      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()
    )t1
    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
    로그인 후 복사

전체 쿼리:

select 
t1.purchase_date,
coalesce(SUM(t1.amount+t2.amount), 0) AS amount
from
(
  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()
)t1
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
로그인 후 복사

이 포괄적인 쿼리를 활용하여 쿼리를 사용하면 거래가 없는 날에 대한 빈 행을 포함하여 지난 7일 동안의 총 매출을 효과적으로 추출할 수 있습니다.

위 내용은 단일 MySQL 테이블에 빈 행이 있는 지난 7일간의 트랜잭션을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿