MySql Query help
Я делаю запрос, чтобы получить количество сборок в день из нашей базы данных за последние 30 дней. Но это стало необходимым в отмеченные дни, когда также не было сборок.
В моем предложении WHERE я использую submittime, чтобы определить, были ли сборки, как я могу изменить это, чтобы включить дни с COUNT(id) == 0, но только за последние 30 дней.
Оригинальный запрос:
SELECT COUNT(id) AS 'Past-Month-Builds',
CONCAT(MONTH(submittime), '-', DAY(submittime)) as 'Month-Day'
FROM builds
WHERE DATE(submittime) >= DATE_SUB(CURDATE(), INTERVAL 30 day)
GROUP BY MONTH(submittime), DAY(submittime);
Что я пробовал:
SELECT COUNT(id) AS 'Past-Month-Builds',
CONCAT(MONTH(submittime), '-', DAY(submittime)) as 'Month-Day'
FROM builds
WHERE DATE(submittime) >= DATE_SUB(CURDATE(), INTERVAL 30 day)
OR COUNT(id) = 0
GROUP BY MONTH(submittime), DAY(submittime);
1 ответ
Решение
Вам нужна таблица дат, затем оставьте соединение с таблицей сборок.
Что-то вроде этого:
SELECT
COUNT(id) AS 'Past-Month-Builds',
CONCAT(MONTH(DateTable.Date), '-', DAY(DateTable.Date)) as 'Month-Day'
FROM DateTable
LEFT JOIN builds ON DATE(builds.submittime) = DateTable.Date
WHERE DateTable.Date >= DATE_SUB(CURDATE(), INTERVAL 30 day)
GROUP BY MONTH(submittime), DAY(submittime);