таблица находится в MySQL (порядка 4 ярдов строчек)
макросами вытягиваю оттудова данные
а вот и суть проблемы
есть такая таблица (itsDate, itsName,itsPlace, itsQuant)
и в ней значения
("2018-05-31","киви","город 2","12")
("2018-05-31","яблоко","город 1","10")
("2018-05-31","груша","город 1","5")
("2018-05-31","груша","город 2","11")
("2018-04-30","яблоко","город 2","4")
("2018-04-30","яблоко","город 1","5")
("2018-04-30","груша","город 1","6")
("2018-04-30","банан","город 1","7")
цель вытащить одним запросом такую таблицу (изменение количества по всем продуктам в разрезе городов - если строка например яблок в городе 2 на дату отсутствует то значит в городе яблок нет или если строчки на раннюю дату нет а в более поздней есть то значить увеличение кол-ва с нуля)
яблоко, город 1, +5
яблоко, город 2, -4
груша, город 1, -1
груша, город 2, +11
банан, город 1, -7
банан, город 2, 0 (ммм или даже не надо эту строчку - разницы нет)
киви, город 1,0 (тоже разницы нет выводить или нет)
киви, город 2, +12
двигаюсь в данном направлении
Код |
---|
select sum(t2.itsQuant-t1.itsQuant)
from
(select * from table where itsDate='2018-04-30') as t1
join
(select * from table where itsDate='2018-05-31') as t2
on
t1.itsName=t2.itsName and t1.itsPlace=t2.itsPlace
group by t2.itsName, t2.itsPlace |
НО join только выбирает те элементы которые есть в обоих городах на обе даты full outer join - выдает ошибку - читай документацию но даже если с этим разберусь то как я понял для тех позиции которых нет в одном из городов или на одну из дат будут выдаваться NULL и счет вероятно не произойдет
думал про self join - как то совсем не получается((((((
mysql-5.6.23