0

Есть задачка по генерации отчетов.

Есть таблица orders (в реальности таблица содержит еще бизнес логику):

id | status | created_at

Я группирую заказы по status, так как мне нужна статистика по каждому статусу и плюсом еще забираю кучу данных. Результат почти меня устраивает, но например если пользователь выберет определенный период, то некоторых статусов нет в заданном периоде.

Есть ли какая-то возможность дополнить остальными статусами выборку? Условно заранее проинициализировать все статусы, чтобы не попавшие в выборку не исчезали совсем.

Mariadb 10

1 Answers1

0

Следует получить список статусов, а потом пристыковать к нему данные:

SELECT statuslist.status, orders.another_columns
FROM ( SELECT DISTINCT status
       FROM orders ) statuslist
LEFT JOIN orders ON statuslist.status = orders.status
                AND orders.created_at BETWEEN ...
...

С другой стороны, раз статусы сплошь и рядом повторяются - почему они не в отдельной таблице?

Akina
  • 31,807