SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.04.2011 14:08:34

Adam
Участник
Зарегистрирован: 21.04.2011
Сообщений: 1

Переменная в запросе не сохраняет значение

Здравствуйте.

Пишу след.запрос:

SELECT
  t2.id,
  t2.id_contract_agency,
  @var1:=COALESCE(SUM(t2.accruals_heat * t3.heat + t2.accruals_water * t3.water + t2.accruals_electric_energy * t3.electric_energy), 0) AS cost,
    @var2:=
       (SELECT SUM(t4.summ_payment)
    FROM contract_agency_payments t4
    WHERE t4.id_contract_agency = t2.id_contract_agency
    ) AS payments,

    (@var1-@var2) AS debt /*здесь проблема*/

FROM contract_agency t1
  LEFT OUTER JOIN spr_tariff t3 ON (t1.id_tariff = t3.id)
  INNER JOIN contract_agency_turnover t2 ON (t1.id = t2.id_contract_agency) AND (t1.id = t2.id_contract_agency)
GROUP BY t2.id_contract_agency
 


@var1-@var2 возвращает NULL, хотя cost и payments в результате числовые значения.

и еще, если вместо (@var1-@var2) прописать @var2, то выдает строковое значение, стоит написать @var2-0 (или+0), то значение корректное, если тоже самое проделать с @var1, то выдает NULL, без этого костыля строковое значение sad

Неактивен

 

#2 21.04.2011 16:45:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Переменная в запросе не сохраняет значение

А что в конечном итоге хочется получить? Я ожидаю, что там вообще написана полная
ерунда в переменных — у Вас же запрос с группировкой. Если нужен именно такой,
можете попробовать

SELECT *, cost - payments AS debt FROM ( ... тут весь подзапрос без debt ... ), он не
будет сильно хуже, но гарантированно пересчитает то, что Вы хотите.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson