Как сделать правильное объединение по этому запросу на основе столбца даты?

0

Как правильно вступить в этот запрос. У меня есть еще одна таблица, к которой мне нужно присоединиться, присоединить этот результат запроса на основе даты.

(SELECT t.date FROM (SELECT ("2018-01-31" - INTERVAL c.number DAY) AS date
FROM (SELECT singles + tens + hundreds number FROM 
(SELECT 0 singles
UNION ALL SELECT   1 UNION ALL SELECT   2 UNION ALL SELECT   3
UNION ALL SELECT   4 UNION ALL SELECT   5 UNION ALL SELECT   6
UNION ALL SELECT   7 UNION ALL SELECT   8 UNION ALL SELECT   9
) singles JOIN 
(SELECT 0 tens
UNION ALL SELECT  10 UNION ALL SELECT  20 UNION ALL SELECT  30
UNION ALL SELECT  40 UNION ALL SELECT  50 UNION ALL SELECT  60
UNION ALL SELECT  70 UNION ALL SELECT  80 UNION ALL SELECT  90
) tens  JOIN 
(SELECT 0 hundreds
UNION ALL SELECT  100 UNION ALL SELECT  200 UNION ALL SELECT  300
UNION ALL SELECT  400 UNION ALL SELECT  500 UNION ALL SELECT  600
UNION ALL SELECT  700 UNION ALL SELECT  800 UNION ALL SELECT  900
) hundreds
ORDER BY number DESC) c  
WHERE c.number BETWEEN 0 and 30) );

Новый запрос, это запрос после добавления левого соединения

    select date from(SELECT d.date FROM (SELECT ("2018-01-31" - INTERVAL c.number DAY) AS date
FROM (SELECT singles + tens + hundreds number FROM 
(SELECT 0 singles
UNION ALL SELECT   1 UNION ALL SELECT   2 UNION ALL SELECT   3
UNION ALL SELECT   4 UNION ALL SELECT   5 UNION ALL SELECT   6
UNION ALL SELECT   7 UNION ALL SELECT   8 UNION ALL SELECT   9
) singles JOIN 
(SELECT 0 tens
UNION ALL SELECT  10 UNION ALL SELECT  20 UNION ALL SELECT  30
UNION ALL SELECT  40 UNION ALL SELECT  50 UNION ALL SELECT  60
UNION ALL SELECT  70 UNION ALL SELECT  80 UNION ALL SELECT  90
) tens  JOIN 
(SELECT 0 hundreds
UNION ALL SELECT  100 UNION ALL SELECT  200 UNION ALL SELECT  300
UNION ALL SELECT  400 UNION ALL SELECT  500 UNION ALL SELECT  600
UNION ALL SELECT  700 UNION ALL SELECT  800 UNION ALL SELECT  900
) hundreds
ORDER BY number DESC) c  
WHERE c.number BETWEEN 0 and 30))d LEFT JOIN report r ON r.date = d.date;
Теги:
mysql-workbench

1 ответ

1

Используйте left join. Тогда вы просто выполните:

select d.date, . . . 
from (<your query here>) d left join
     yourtable t
     on t.date = d.date
  • 0
    Тар не работает, получая ошибку, как и раньше, таблица должна иметь свой собственный псевдоним, хотя псевдоним указан.
  • 0
    «Тар не работает, получая ошибку, как и раньше, таблица должна иметь свой собственный псевдоним, хотя псевдоним указан» тогда вы делаете что-то еще неправильно, «прототип» запроса от Гордена верен
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню