SAYri
@SAYri

Как получить данные из базы по дате и если нет даты за день получить 0?

Например нужно сделать выборку за неделю (за каждый день отдельно)
id| day | item
1 | 2019-04-01 | 3
2 | 2019-04-04 | 5
3 | 2019-04-05 | 7
4 | 2019-04-06 | 2

и если нет какого то дня в базе данных, на выходе за эту дату выходило значение =0

[
['day' =>'2019-04-01', 'item'=>3],
+
['day' =>'2019-04-02', 'tem'=>0],
['day' =>'2019-04-03', 'item'=>0],
+
['day' =>'2019-04-04 ', 'item'=>5],
['day' =>'2019-04-05' , 'item'=> 7],
['day' =>'2019-04-06' , 'item'=>2]
]
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 2
flapflapjack
@flapflapjack
на треть я прав
Можно так схитрить попробовать.

SELECT SUM(item) FROM tablename WHERE day=Такойтовотдень GROUP BY day
Ответ написан
Комментировать
@Vitsliputsli
Как-то так:
WITH recursive t (n) AS (
    SELECT CAST('2019-04-01' as datetime) n FROM dual
    UNION ALL
    SELECT (n + INTERVAL 1 DAY) n FROM t WHERE n<=CAST('2019-04-06' as datetime)
)
SELECT t.n,sum(d.item) FROM data d
RIGHT JOIN t ON d.day = t.n
WHERE d.day BETWEEN CAST('2019-04-01' as datetime) AND CAST('2019-04-06' as datetime)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы