Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Возвращение к старому (Михаил) 10/09/2014 - 18:34:58
      Re: Возвращение к старому (Akina) 10/09/2014 - 18:48:46
      Re: Возвращение к старому (Михаил) 10/09/2014 - 19:32:24
      Re: Решено (Михаил) 10/09/2014 - 19:49:55

> Original message text:
> From: Михаил - 10/09/2014 - 18:34:58
> Subject:Возвращение к старому
> -----------------
> В начале года задавал вопрос:
> Можно ли сделать выборку одним запросом? (Михаил) 30/01/2014 - 23:11:17
> Вроде бы тогда решили, но...
> Недавно обнаружили расхождение в данным. Стал выяснять откуда растут ноги и обнаружил следующее.
> Есть наш запрос:
> SELECT view1.partner_id, t3.quantity - t2.quantity delta, view1.free
> FROM (
> SELECT DISTINCT t1.partner_id, t1.free
> FROM orders t1
> WHERE number_id IN (36,38)
> ) view1
> LEFT JOIN orders t2 ON t2.number_id = 36 AND t2.partner_id = view1.partner_id AND t2.free = view1.free
> LEFT JOIN orders t3 ON t3.number_id = 38 AND t3.partner_id = view1.partner_id AND t3.free = view1.free
> WHERE t2.quantity != t3.quantity;
>
> Он прекрасно работает, если фирма присутствует в обоих заказах (с number_id = 36 и 38)
> Но если фирма ушла из заказа или появилась новая, то сравнение не работает.
> То есть если t3.quantity или t2.quantity равно NULL то фирма выпадает из сравнения.
> Можно ли исправит запрос, чтобы в случае t3.quantity=NULL подставлялось вместо NULL 0?
>


From: Михаил - 10/09/2014 - 19:49:55
Subject:Решено
-----------------
Спасибо!)
SELECT view1.partner_id, COALESCE(t3.quantity,0) - COALESCE(t2.quantity,0) delta, view1.free
FROM (
SELECT DISTINCT t1.partner_id, t1.free
FROM orders t1
WHERE number_id IN (36,38)
) view1
LEFT JOIN orders t2 ON t2.number_id = 36 AND t2.partner_id = view1.partner_id AND t2.free = view1.free
LEFT JOIN orders t3 ON t3.number_id = 38 AND t3.partner_id = view1.partner_id AND t3.free = view1.free
WHERE COALESCE(t2.quantity,0) != COALESCE(t3.quantity,0);


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
43190



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |