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




MySQL.RU - Webboard



Вернуться
отбор записей по HAVING неверный? (Lev) 13/04/2004 - 21:56:55
      Re: отбор записей по HAVING неверный? (Dinky) 14/04/2004 - 20:26:43
      Re: Не в том суть.... (Lev) 15/04/2004 - 05:31:44
      Re: Не в том суть.... (Marat_L) 15/04/2004 - 09:43:56
      Re: Не в том суть.... (Lev) 15/04/2004 - 21:53:11
      Re: Не в том суть.... (Dinky) 16/04/2004 - 00:35:51
      Re: Без суда???!!!! (Lev) 16/04/2004 - 05:35:47
      Re: Кстати (Lev) 16/04/2004 - 05:43:28
      Re: Кстати (Marat_L) 16/04/2004 - 08:54:36
      Re: Действительно, однако странно... (Lev) 16/04/2004 - 10:25:00
      Re: Значит и pls<>0 должно сработать (Marat_L) 16/04/2004 - 11:06:04
      Re: Значит и pls<>0 должно сработать (Marat_L) 16/04/2004 - 11:12:44
      Re: глюк? (Dinky) 16/04/2004 - 18:58:28
      Re: И все-таки тонкости.. (Lev) 16/04/2004 - 20:31:51
      Re: И все-таки тонкости.. (Dinky) 16/04/2004 - 21:39:51
      Re: Вроде тему можно закрыть (Lev) 17/04/2004 - 05:00:23

> Original message text:
> From: Lev - 13/04/2004 - 21:56:55
> Subject:отбор записей по HAVING неверный?
> -----------------
> Такой вот эффект: есть запрос
>
> SELECT tb_acrab.cen - IFNULL(SUM(tb_vzak.cen), 0) as pls
> FROM tb_acrab LEFT JOIN tb_vzak ON tb_acrab.id_ar=tb_vzak.ar
> GROUP BY tb_acrab.id_ar
> HAVING NOT pls=0;
>
> так вот, этот запрос иногда выдает записи, которые имеют pls=0! причем сам же и показывает, pls именно =0...
> А вот если в критерии HAVING использовать не pls, а непосредственно выражение:
> (tb_acrab.cen - IFNULL(SUM(tb_vzak.cen), 0))=0
> то все отбирается правильно, лишние записи в ответ не лезут.
> Подозреваю, что это связано с форматом представления чисел при вычислении выражений. Но как именно связано? как этот эффект объяснить, что бы завтра на него не напороться в другом месте...?
> Может кто прокомментирует?
>


From: Lev - 17/04/2004 - 05:00:23
Subject:Вроде тему можно закрыть
-----------------
Видимо, корень в этом:
...the default result value of IFNULL(expr1,expr2) is the more ``general'' of the two expressions, in the order STRING, REAL, or INTEGER.
В принципе причина понятна - и с самого начала собственно об этом разговор и шел. Однако все равно странно, что только отдельные! единичные! записи попадают в эту ловушку... Из сотен, в которых pls=0. Досадно, что придется все время помнить о том, что надо "дорабатывать и усложнять" запросы, так как серверная математика туповата...

Всем спасибо за участие в обсуждении!


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

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

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



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