|
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:32:24
Subject:Возвращение к старому
-----------------
Попробовал через IFNULL - не получилось.
SELECT view1.partner_id, IFNULL(t3.quantity,0) - IFNULL(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 t2.quantity != t3.quantity;
Сейчас посмотрю ваш совет.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
43190
|
|