나는 이러한 중요성을 가진 제품에 대한 MySQL 테이블을 보유하고 있습니다.MySQL은 날짜 범위에서 매일 활성 레코드를 계산합니다.
-id
는 해당 월의 일을 반복에 내가 좋아하는 것,
가 도착 방출 열을 사용
을 -released -arrived 통해 '2017년 1월 1일'를 말한다 '2017-01-30'및 "활성"인 제품 수를 확인하십시오. 날짜 범위에 대해 매일 루프를 반복하고 날짜 범위에서 매일 '2017-01-01'에 대해 활성 상태 인 제품 수를 확인한다는 의미입니다.'2017-01-01'과 같이 개별 날짜를 확인하는 데 사용하는 코드는 다음과 같습니다.
SELECT COUNT(id)
FROM products_booking
WHERE (released IS NULL OR released >= '2017-01-01') AND (arrived <= '2017-01-01')
이렇게하면 현재 "활성"제품 수가 반환됩니다.
그러나 지정된 날짜 범위의 매일 "활성"제품 수를 계산할 수있는 보고서의 지정된 날짜 범위에서이 작업을 수행하고 싶습니다.
나는 다음과 같은 시도를 해본 적이 없으며이 방법으로 잘못된 길을 찾은 것처럼 보입니다.
SELECT MonthDate.Date, COALESCE(COUNT(IB.id), 0) AS Total
FROM (
SELECT 1 AS Date 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 UNION ALL
SELECT 10 UNION ALL
SELECT 11 UNION ALL
SELECT 12 UNION ALL
SELECT 13 UNION ALL
SELECT 14 UNION ALL
SELECT 15 UNION ALL
SELECT 16 UNION ALL
SELECT 17 UNION ALL
SELECT 18 UNION ALL
SELECT 19 UNION ALL
SELECT 20 UNION ALL
SELECT 21 UNION ALL
SELECT 22 UNION ALL
SELECT 23 UNION ALL
SELECT 24 UNION ALL
SELECT 25 UNION ALL
SELECT 26 UNION ALL
SELECT 27 UNION ALL
SELECT 28 UNION ALL
SELECT 29 UNION ALL
SELECT 30 UNION ALL
SELECT 31) AS MonthDate
LEFT JOIN products AS IB
ON MonthDate.Date >= DAY(IB.released) AND MonthDate.Date <= DAY(IB.arrived)
WHERE MonthDate.Date <= DAY(LAST_DAY('2017-01-30'))
GROUP BY MonthDate.Date
나는 이것을 시도했지만 매일 1을 반환하고있다.
는SELECT COUNT(*) cnt, MonthDate.Date
FROM (
SELECT 1 AS Date 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 UNION ALL
SELECT 10 UNION ALL
SELECT 11 UNION ALL
SELECT 12 UNION ALL
SELECT 13 UNION ALL
SELECT 14 UNION ALL
SELECT 15 UNION ALL
SELECT 16 UNION ALL
SELECT 17 UNION ALL
SELECT 18 UNION ALL
SELECT 19 UNION ALL
SELECT 20 UNION ALL
SELECT 21 UNION ALL
SELECT 22 UNION ALL
SELECT 23 UNION ALL
SELECT 24 UNION ALL
SELECT 25 UNION ALL
SELECT 26 UNION ALL
SELECT 27 UNION ALL
SELECT 28 UNION ALL
SELECT 29 UNION ALL
SELECT 30 UNION ALL
SELECT 31) AS MonthDate
LEFT OUTER JOIN products IB
ON (MonthDate.date BETWEEN IB.arrived AND IB.released)
GROUP BY MonthDate.Date;
그러나 날짜 열은 필요 I는 다음과 같이 총 활성제의 개수 인 상태, 출력을보고 희망
아니다.
일 총
2017년 1월 1일 3024
2017년 1월 2일 3029
....
2017년 1월 30일 2987
기타를 제안?
예상 결과를 표시 할 수 있습니까? –
예상되는 출력을 편집에 추가했습니다. 잘하면 도움이됩니다. – Ethan
다른 한 가지 질문 : 현재 출력은 무엇입니까? 귀하의 질문은 나에게 괜찮아 보입니다. –