2017-01-27 20 views
0

У меня есть временная таблица aсоюз двух временных таблиц

"date"   "value" 
"2016-09-09" 0.0533 
"2016-09-12" 0.0552 
"2016-09-14" 0.0567 
"2016-09-15" 0.0537 
"2016-09-19" 0.0529 
"2016-09-19" 0.0506 
"2016-09-19" 0.0525 
"2016-09-20" 0.0517 
"2016-09-20" 0.0534 

и временную таблицу b, что дает мне каждую неделю в среднем каждую субботу

"date"   "avgValue" 
"2016-09-10" 0.0533 
"2016-09-17" 0.0552 
"2016-09-24" 0.0522 

Даты почти никогда не выстраиваются в очередь, но может по случаю. Я хочу сделать полное внешнее соединение, но mysql этого не позволяет. Поэтому я пробовал всевозможные союзы и объединения, и проблема в том, что я пинал свою задницу в течение последних 4 часов. Таблица, которую я хочу, выглядит так:

"date"   "value" "avgValue" 
"2016-09-09" 0.0533  NULL 
"2016-09-10" NULL  0.0533 
"2016-09-12" 0.0552  NULL 
"2016-09-14" 0.0567  NULL 
"2016-09-15" 0.0537  NULL 
"2016-09-17" NULL  0.0552 
"2016-09-19" 0.0529  NULL 
"2016-09-19" 0.0506  NULL 
"2016-09-19" 0.0525  NULL 
"2016-09-20" 0.0517  NULL 
"2016-09-20" 0.0534  NULL 
"2016-09-24" NULL  0.0522 

До сих пор у меня есть это, что ничего не делает.

select * 
from a 
left join b 
on b.date = a.date 
union 
select * 
from a 
right join b 
on b.date = a.date; 

ответ

0

Я предложил бы использовать union all/group by подход:

select date, max(value) as value, max(argvalue) as argvalue 
from ((select date, value asvalue, NULL as argvalue from a) union all 
     (select date, NULL, argvalue from b) 
    ) ab 
group by date; 
+0

Судя по его желаемому результату, то не нужно внешнюю часть этого запроса. – Uueerdo

+0

Вы, сэр, святые. Его заняли у меня 4 часа, и вы решили проблему почти сразу. Вы пропустили пробел между «как» и «значение» и поставили argvalue вместо avgvalue, но как только я исправил это, немедленно сработал. Огромное спасибо. –

+0

@ JaredPeterson - Гордон - мастер. :) – MontyPython

 Смежные вопросы

  • Нет связанных вопросов^_^