powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка в запросе
37 сообщений из 37, показаны все 2 страниц
Ошибка в запросе
    #32279820
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите найти ошибку:
Код: plaintext
1.
2.
3.
4.
SELECT  "Себестоимость"  As Наименование , Sum(NZ(round([Зад_пост].[Эквивалент1], 2 ), 0 )) 
 - Sum(nz(round([Зад_пост].[Эквивалент2], 2 ), 0 ))  + Sum(nz(round([sklad].[Эквивалент1], 2 ), 0 ))
 - Sum(nz(round([sklad].[Эквивалент2], 2 ), 0 )) + Sum(nz(round([Bill_charge].[Эквивалент2], 2 ), 0 ))
 - Sum(nz(round([Bill_charge].[Эквивалент1], 2 ), 0 )) AS [Сумма]
FROM Зад_пост,sklad,Bill_charge

Проблема в том, что ноль все время получается
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279835
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по отдельности каждый Sum тоже 0?

Вообще-то лично я NZ() не люблю (почему-то). Предпочитаю IIF().
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279870
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черт подери! Не криво работает, если в одной из этих таблиц нет нужного значения :(
А я так с этим NZ старался
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279871
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не криво = криво :)
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279878
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Витал: здесь (давно уже) целая дискуссия развивалась по поводу хороших свойств IIF
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279904
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лифчик
В его достоинствах я и не сомневался. Хотя полюбопытствовать - полюбопытствовал бы. Об чем дискуссион. А может и видел уже.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279907
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понял явно выраженных ошибок нет...
Тогда может есть какие-нибудь соображения по моему вопросу?
Что-то я не уверен, что во всем виноват NZ
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279922
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Витал: вот пусть завсегдатаи вспомнят, я только отдаленно - то ли IIF неоптимально в запросах работает, то ли вообще врет в некоторых случаях...больше - увы ничего не вспоминается
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279926
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, заведите себе топик
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279930
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Могу подсказать одну особенность IIF: он сначала вычисляет все свои параметры, а потом выбирает один из них. То есть он работает в среднем в 2 раза медленнее, чем обычный if.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279945
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сааанныычч, ну хоть ты помоги :)
Почему если в одной таблице нет нужного для вычисления знгачения, то ничего не вычисляется????
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279946
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а еще есть хорошие функции Choose и Switch.
иногда оооочень удобные.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279949
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всеволод.
чего за функция round?
наверняка она Null не понимает.
надо писать
Sum(round(nz([Зад_пост].[Эквивалент1],2),0))
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279960
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
round типа это функция округления...
я чтобы проверить то, что ты имееш ввиду вообще ее убрал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT  "Себестоимость"  As Наименование , Sum(NZ([Зад_пост].[Эквивалент1], 0 )) 
- Sum(nz([Зад_пост].[Эквивалент2], 0 ))  
+ Sum(nz([sklad].[Эквивалент1], 0 ))  
- Sum(nz([sklad].[Эквивалент2], 0 )) 
+ Sum(nz([Bill_charge].[Эквивалент2], 0 ))
- Sum(nz([Bill_charge].[Эквивалент1], 0 )) AS [Сумма]
FROM Зад_пост,sklad,Bill_charge
WHERE ((([Зад_пост].[Реф №])=[forms]![заказ]![ref]) 
and (([sklad].[Реф №])=[forms]![заказ]![ref]) 
and (([Bill_charge].[Реф №])=[forms]![заказ]![ref]))
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279961
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А что значит нет нужного значения? Это весь селект?

В нем нету where, следовательно ниоткуда не следует, какое значение "нужное".

В нем нету group by, следовательно непонятно, как вообще будет работать Sum.

В нем нету join, следовательно количество записей в результате будет равно произведению количеств записей в 3 исходных таблицах. В частном случае, если в одной из таблиц 0 записей, то и в результате будет 0.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279966
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
О. Появилось where. Теперь проще: если where не находит нужных записей, то их и не видно.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279972
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Where я зыбыл скопировать тогда :)
Все! Я сообразил! Во Where надо пихать что-то вроде Or IsNull
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279973
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо :)
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279983
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя нет - Null тут не покатит:)
Сделал так:
Код: plaintext
1.
2.
WHERE ((([Зад_пост].[Реф №])=[forms]![заказ]![ref] or  null) 
and (([sklad].[Реф №])=[forms]![заказ]![ref] or null) 
and (([Bill_charge].[Реф №])=[forms]![заказ]![ref] or null))

И все равно не работает
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279990
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Есть ли среди этих 3 таблиц одна такая, что в ней нужное число обязательно есть, а если в ней нет, то и нигде нет?
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279996
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Свое замечание про group by я снимаю. :^)
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32279999
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли среди этих 3 таблиц одна такая, что в ней нужное число обязательно есть, а если в ней нет, то и нигде нет?

Если в одной из трех таблиц (любой) нет нужного числа, то и нигде нет
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280018
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
То есть проблема, которую мы решаем, касается только случая, когда этого значения нет нигде?
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280063
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть проблема, которую мы решаем, касается только случая, когда этого значения нет нигде?
Других диффектов я пока не нашел :)
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280069
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
1. В 17:37 ты говорил - "если в одной из этих таблиц нет нужного значения".\r
\r
2. А в чем проблема-то? Если в том, что выдается 0, то так и надо.\r
\r
3. К твоему 18:43 поправка:\r
\r
WHERE ((([Зад_пост].[Реф №])=[forms]![заказ]![ref] or [Зад_пост].[Реф №] is null) \r
and (([sklad].[Реф №])=[forms]![заказ]![ref] or [sklad].[Реф №] is null) \r
and (([Bill_charge].[Реф №])=[forms]![заказ]![ref] or [Bill_charge].[Реф №] is null))\r
\r
4. Возможно, что-нибудь полезное найдешь тут:\r
\r
/topic/50814\r
\r
Постановка задачи: "если такая цена в таблице не найдена - количество равно нулю". См. мой ответ от 26 сен 03, 17:59.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280116
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Что выдает этот запрос, если в нем убраны агрегатные функции?
2. У меня смутные подозрения, что надо использовать OUTER JOIN
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280315
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Cat2:

OUTER JOIN не надо - см. пост Всеволода от вчера, 18:53.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280370
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
WHERE ((([Зад_пост].[Реф №])=[forms]![заказ]![ref] or  null) 
and (([sklad].[Реф №])=[forms]![заказ]![ref] or null) 
and (([Bill_charge].[Реф №])=[forms]![заказ]![ref] or null))


То что таблицы не связаны между собой это не влияет?
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280378
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> То что таблицы не связаны между собой это не влияет?

Это накладывает фильтр на каждую таблицу в отдельности, и это нормально.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280393
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT 
 "Себестоимость"  As Наименование , 
((Select Sum(NZ(round([Эквивалент1], 2 ), 0 )) 
- Sum(nz(round([Эквивалент2], 2 ), 0 ))  
From Зад_пост 
Where [Зад_пост].[Реф №] =[forms]![заказ]![ref]) +  
(Select Sum(nz(round([sklad].[Эквивалент1], 2 ), 0 ))
 - Sum(nz(round([sklad].[Эквивалент2], 2 ), 0 )) 
From sklad
Where sklad.[Реф №]=[forms]![заказ]![ref]) +
(Select  Sum(nz(round([Bill_charge].[Эквивалент2], 2 ), 0 ))
 - Sum(nz(round([Bill_charge].[Эквивалент1], 2 ), 0 )) 
From Bill_charge
Where Bill_charge.[Реф №]=[forms]![заказ]![ref])) 
AS [Сумма]

Я бы попробовал так, если бы имел исходные данные.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280553
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Натыкался на странности nz(), когда в него попадает поле из outer Join-а (а не обычный null из поля). nz "возвращал" null (в том же запросе, где был Джон, по моему; хотя уже и не помню - много утекло. могу и вапще соврать - память-то дело тонкое). В Акс97. При этом я предположил, что проблема в какой-нить оптимизации и прочей внутренней кухне. А как сделал - не помню тем более. НАверное IIF-ами.

А что проще - вывести поля поотдельности, да посмотреть, что он там себе варит.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280600
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2assa
По отдельности все работает (было уже)

2Витал
Смысла не понял, но попробую :) (когда на работу прийду)
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280606
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Всеволод, посмотри мой пост от вчера, 20:39.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280609
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и вообще хотелось бы внесит ясность!
Должен ли работать предложенный мною вариант?
Если ДА, то какие могут быть причины неработания? :)
Если НЕТ, то почему?
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280616
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч
Вариант с or Null появился после попытки сделать как ты предложил :)
В ссылке ничего полезного не нашел :)
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32280670
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> В ссылке ничего полезного не нашел :)

Значит, твоя проблема отличается от той.
...
Рейтинг: 0 / 0
Ошибка в запросе
    #32282633
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня только что осинило :)
Чтобы все работало, нужно каждую сумму вот так вот расписать:
Код: plaintext
NZ((Select Sum(nz([sklad].[Эквивалент1], 0 )) as a FROM sklad WHERE [sklad].[Реф №]=[forms]![заказ]![ref]), 0 )
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]