Показать сообщение отдельно
  #1 (permalink)  
Старый 20.03.2021, 15:06
Аспирант
Отправить личное сообщение для shareware Посмотреть профиль Найти все сообщения от shareware
 
Регистрация: 04.11.2019
Сообщений: 32

Проблема с запросом SQL
Сижу вторые сутки и дико туплю. Господа, подскажите, как получить то, чего желаю..


Выбираю период (в одном и том же году). Например, с 1 января до 31 декабря 2013 года. Далее делаю SUM() для нужного столбца. Код:

// Идентификатор объекта в городе
foreach (json_decode($this->data['need_radio']) as $k=>$v)
{
$tempDataArray = []; $tempSumArray = [];
 
$query = pg_query($this->connection,"
    SELECT town_name FROM sprtowns WHERE town_id=".$v."
") or die($this->sendMessage(true,'Ошибка запроса. m:one:sprt_mult'));
 
$tmp = pg_fetch_array($query);
 
 
$queryPayment = pg_query($this->connection, "
  SELECT to_char(pay.date_pay::abstime::timestamp, 'mm-yyyy') as date, sum(pay.summ) as summ FROM payment as pay, orders as 
  ord WHERE pay.date_pay>=".$from_date." AND pay.date_pay<=".$to_date."
  AND pay.dropped=0 AND pay.plan_pay=0 AND pay.order_id=ord.order_id AND ord.dogovor_town_id=".$v." AND 
  ord.is_test_object=0 AND ord.type=1 AND ord.dropped=0 AND ord.org_id=1
  GROUP BY date         
") or die($this->sendMessage(true,'Ошибка запроса. m:one:qrypmnt_mult'));
 
}


Пример получаемых данных для г.Комсомольска-на-Амуре:
Код:
date    summ
01-2013	16074
02-2013	295640.399609375
03-2013	633340.14
04-2013	1503321.66058594
05-2013	1027556.70068359
06-2013	744836.5
07-2013	1321706.7
08-2013	26606
08-2013	596959.54
09-2013	1050410.6
10-2013	1063984.06995117
11-2013	1102416.03
12-2013	61767
12-2013	2558022.37
А вот пример для г.Благовещенск:
Код:
date    summ
09-2013	32275
12-2013	38275
Я хочу, чтобы для Благовещенска и других городов выдавался тот интервал, который я выбрал. Если для данной даты нет значения, то хочу получить такой вид:

Код:
date    summ
01-2013	NULL
02-2013	NULL
03-2013	NULL
04-2013	NULL
05-2013	NULL
06-2013	NULL
07-2013	NULL
08-2013	NULL
09-2013	32275
10-2013	NULL
11-2013	NULL
12-2013	NULL
12-2013	38275
Подскажите, пожалуйста, как поступить..я вроде знаю про LEFT JOIN, который в теории мог бы мне помочь, но как его применить - в мыслях нету
Ответить с цитированием