|
Деление на ноль в SQL | ☑ | ||
---|---|---|---|---|
0
Guzey
12.04.16
✎
11:33
|
Добрый день Коллеги. Столкнулся с проблемой, ошибка деления на ноль. Вроде все просто, но начал ковырять и наткнулся на странную проблему. Имеем вот такой запрос:
ВЫБРАТЬ СпрУпаковки.Ссылка КАК Ссылка, СпрУпаковки.Числитель / СпрУпаковки.Знаменатель КАК Коэффициент ИЗ Справочник.Номенклатура КАК СпрНоменклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК СпрУпаковки ПО (СпрУпаковки.Владелец = ВЫБОР КОГДА СпрНоменклатура.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры) ТОГДА СпрНоменклатура.Ссылка КОГДА СпрНоменклатура.НаборУпаковок <> ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ПустаяСсылка) ТОГДА СпрНоменклатура.НаборУпаковок ИНАЧЕ ЛОЖЬ КОНЕЦ) ГДЕ СпрНоменклатура.Ссылка = &Номенклатура И НЕ СпрУпаковки.ПометкаУдаления УПОРЯДОЧИТЬ ПО Ссылка ИЕРАРХИЯ При делении запрос выдает ошибку деления на ноль в SQL базе. Эта же база в файловой ошибку не возвращает. Если в sql базе не делить, а просто вывести отдельно знаменатель и числитель, то они не равны нулю. Если из запроса убрать внутреннее соединение, ошибка не возникает. Кто с таким сталкивался, как такое решать? |
|||
1
shuhard
12.04.16
✎
11:35
|
(0) поймай запрос профайлером и позырь
|
|||
2
Тролль главный
12.04.16
✎
11:37
|
||||
3
ssalikoff
12.04.16
✎
11:38
|
(0) Для знатоков MSSQL. Ошибка возникает только в серверном режиме.
В этой ветке всё гораздо подробней описано Но решения пока никто не предложил Интересно, что проблема как минимум три недели существует с момента выхода релиза 11.2.3.108 но сообщение о проблеме были на мисте опубликовано почти одновременно |
|||
4
Тролль главный
12.04.16
✎
11:39
|
(3) вот это
ВЫБОР КОГДА НЕ СпрУпаковки.ЭтоГруппа ТОГДА СпрУпаковки.Числитель / СпрУпаковки.Знаменатель КОНЕЦ не помогло? |
|||
5
ssalikoff
12.04.16
✎
11:42
|
(4) Нет, СправочникУпаковки там иерархия элементов
нет там никаких групп |
|||
6
Карупян
12.04.16
✎
11:44
|
КОГДА ЕСТЬNULL(СпрУпаковки.Знаменатель, 0) = 0 ТОГДА ...
|
|||
7
ssalikoff
12.04.16
✎
11:46
|
(6) Вообще вопрос не как обойти проблему — это совсем несложно. Вопрос в другом - почему?
То есть наблюдается явление противоречащее здравому смыслу, а объяснения нет. |
|||
8
Карупян
12.04.16
✎
11:49
|
если ты хочешь понять почему, то лови профайлером
|
|||
9
НЕА123
12.04.16
✎
12:10
|
(0)
странный, очень странный запрос. |
|||
10
Guzey
12.04.16
✎
12:53
|
(1) Поймал, деление 1 на 1
(2) Оп! И правда дежавю, пошел изучать (6) Не катит, проверял, там точно число, нет ни нуля, не NULL`а. Результат запроса в консоле Числитель = 1, Знаменатель = 1. (9) Запрос из типовой конфигурации, так что комментировать странность не буду. Пока меня смущает то что, в соединении оба условия возвращают истину, убираю любое из условий проблема не возникает. Кстати проверил на постргре, ошибки нету. Похоже скуль не корректно интерпретирует условие в соединении. |
|||
11
Тролль главный
12.04.16
✎
12:56
|
(10) не скуль, а 1С скармливает скулю криво
|
|||
12
Guzey
12.04.16
✎
12:57
|
Проблема еще решается кстати если упорядочивать без ИЕРАРХИИ, но поведение все таки странное. Буду писать на хот лайн 1с-ников, проблема все таки похоже платформенная.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |