Как объединить 3 зароса mysql в один?

Здравствуйте,

Есть таблица `orders` с полями:
id
status
date_create
date_modified

Нужно объединить 3 запроса:
SELECT count(`id`) AS `All_ord`, `date_create` FROM `ordres` GROUP BY `date_create`
SELECT count(`id`) AS `Success_ord`, `date_modified` as `date_create` FROM `ordres` WHERE `status` = 2 GROUP BY `date_create`
SELECT count(`id`) AS `Cancel_ord`, `date_modified` as `date_create` FROM `ordres` WHERE `status` = 3 GROUP BY `date_create`


Простой left join не подходит, т.к. может быть такое, что за дату изменения не было ни одного заказа, т.е. на выходе хочу получить такой формат:
ddd5d658899747fca68ad9f3ebd6bdca.png
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT * 
    FROM (
    SELECT DISTINCT `date_create` 
        FROM  `ordres`
        UNION SELECT `date_modified` 
            FROM `ordres`
            WHERE `status` IN (2, 3)
    ) AS `date`
    LEFT JOIN (
        SELECT COUNT(*) AS `count`, `date_create`
            FROM `ordres`
            GROUP BY `date_create`
    ) AS `all` ON `all`.`date_create`  = `date`.`date_create`
    LEFT JOIN (
        SELECT COUNT(*) AS `count`, `date_modified`
            FROM `ordres`
            WHERE `status` = 2
            GROUP BY `date_modified`
    ) AS `succ` ON `succ`.`date_modified` = `date`.`date_create`
    LEFT JOIN (
        SELECT COUNT(*) AS `count`, `date_modified`
            FROM `ordres`
            WHERE `status` = 3
            GROUP BY `date_modified`
    ) AS `canc` ON `canc`.`date_modified` = `date`.`date_create`
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы