Задать вопрос
wonchoe
@wonchoe
кодер

Как сформировать запрос с 3х таблиц?

есть 3 таблицы, поля у них одинаковы, есть поле дата, как посчитать и сгрупировать кол-во записей по дате?
counter
init
response

у меня получилось с 1й таблицей
SELECT COUNT(*) as cnt, date as cdate FROM init GROUP BY date ORDER BY date DESC LIMIT 10
результат
434c1c47d1.jpg
но мне надо чтобы вывело что-то подобное, но с 3х таблиц
7e2468897a83453e9a0c7e6da8000564.png
и соответственно если в таблице 2 нет такой даты как в таблице 1, то вывело просто 0
  • Вопрос задан
  • 139 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `dates`.`date`, IFNULL(`t1`.`count`, 0) AS `cnt1`, 
       IFNULL(`t2`.`count`, 0) AS `cnt2`, IFNULL(`t3`.`count`, 0) AS `cnt3`
    FROM (
        SELECT `date` FROM `table1`
            UNION SELECT `date` FROM `table2`
            UNION SELECT `date` FROM `table3`
    ) AS `dates`
    LEFT JOIN (
        SELECT `date`, COUNT(*) AS `count` FROM `table1` GROUP BY `date`
    ) AS `t1` ON `t1`.`date` = `dates`.`date`
    LEFT JOIN (
        SELECT `date`, COUNT(*) AS `count` FROM `table2` GROUP BY `date`
    ) AS `t1` ON `t2`.`date` = `dates`.`date`
    LEFT JOIN (
        SELECT `date`, COUNT(*) AS `count` FROM `table3` GROUP BY `date`
    ) AS `t1` ON `t3`.`date` = `dates`.`date`
    ORDER BY `dates`.`date`
Ответ написан
Ваш ответ на вопрос

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

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