Новости
Документация
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 - 16/04/2004 - 05:35:47
Subject:Без суда???!!!!
-----------------
Что уж сразу убивать... допроси сперва!!!
Я ж писал: "малый" запрос лишь часть большого, в котором при замене условия HAVING (на мой взгляд эквивалентного!) меняется набор записей.
Я проверил еще раз: что в том, что в другом варианте на выходе есть строка, где pls=0 !!!! Несмотря на "HAVING NOT pls=0;"... Именно это странно и непонятно. А других глюков нет...
Проверял с такими запросами (дословно):
малый:
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;
полный:
SELECT tb_acrab.id_ar, tb_dg.ag as kag, tb_dg.id_dg, tb_dg.num as num_d,
tb_agnt.snm as snm_a, tb_dg.snm as snm_d,
tb_acrab.num as num_p,
date_format(tb_acrab.per,'%m.%Y') as dtp,
tb_acrab.cen - IFNULL(SUM(tb_vzak.cen), 0) as pls,
tb_vid.tp as tdg, tb_dg.sts as stdg, tb_dg.svod as sv,
tb_dg.isp as usr
FROM (((tb_acrab INNER JOIN tb_dg ON tb_acrab.dg=tb_dg.id_dg)
INNER JOIN tb_vid ON tb_dg.vid=tb_vid.id_vid)
LEFT JOIN tb_agnt ON tb_dg.ag=tb_agnt.id_ag)
LEFT JOIN tb_vzak ON tb_acrab.id_ar=tb_vzak.ar
GROUP BY tb_acrab.id_ar
HAVING tdg=1 AND usr=2 AND NOT pls=0;
Во втором случае просто записей меньше выдает (точнее фильтр), но и в том и в другом случае ЕСТЬ строка с pls=0
Ну и за что расстрел????


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

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

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



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