powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите по запросу
44 сообщений из 44, показаны все 2 страниц
Помогите по запросу
    #39315383
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро!

Есть запрос:
Код: sql
1.
2.
SELECT Склад.Код, Склад.Название, Sum([Склад].[Количество])-Sum([Продажа].[Количество]) AS Остаток
FROM Склад RIGHT JOIN Продажа ON Склад.Название = Продажа.Название;


Скажите пожалуйста где моя ошибка?
Спасибо!
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315386
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот пример:
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315482
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть кто?)
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315503
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abisma2008,

может это имелось ввиду ?
Код: sql
1.
2.
3.
SELECT Склад.Название, Sum([Склад].[Количество])-Sum([Продажа].[Количество]) AS Остаток
FROM Склад RIGHT JOIN Продажа ON Склад.Название = Продажа.Название
GROUP BY Склад.Название;
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315505
Abisma2008
Код: sql
1.
2.
SELECT Склад.Код, Склад.Название, Sum([Склад].[Количество])-Sum([Продажа].[Количество]) AS Остаток
FROM Склад RIGHT JOIN Продажа ON Склад.Название = Продажа.Название;


Не хватает группировки и NZ для кол-ва продаж.
Код: sql
1.
2.
3.
SELECT Склад.Код, Склад.Название, Sum([Склад].[Количество])-NZ(Sum([Продажа].[Количество]),0) AS Остаток
FROM Склад RIGHT JOIN Продажа ON Склад.Название = Продажа.Название
GROUP By Склад.Название, Склад.Код;

"Код" - это код склада или товара? А "Название"?
И почему у вас связь по "Название", а не "Код товара" из справочника. Или нет справочника товара?
ЗЫ. Базу смотреть лень... :-)
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315532
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport, Анатолий ( Киев )

Спасибо что ответили.
Но Результат не то что я хотел)
Наименование должны сгруппировать. (То есть Книга в запросе должен показать одну строку. (Сут запроса вот такая суммируем все приходи и отнимает суммирование продажа...))
Еще раз Спасибо!
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315535
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),
На код не обращайте внимание. считаем что его нет!)
Справочник товара нету!)
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315536
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abisma2008где моя ошибка?Для начала - в логике имхо... FROM Склад RIGHT JOIN Продажа заставляет думать, что есть продажи того, чего нет на складе...
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315539
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abisma2008guest_rusimport, Анатолий ( Киев )

Спасибо что ответили.
Но Результат не то что я хотел)
Наименование должны сгруппировать. (То есть Книга в запросе должен показать одну строку. (Сут запроса вот такая суммируем все приходи и отнимает суммирование продажа...))
Еще раз Спасибо!

Ой извиняюсь. я на верный код (Ответ от: guest_rusimport) не обращал внимание)
Всё тему можно закрыть)
Я очень благодарен!
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315686
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport, Анатолий ( Киев )
Опять Я!
Немножко усложнил задачу:
Код: sql
1.
2.
3.
SELECT Склад.Название, Склад.Номер_партия, Sum([Склад].[Количество])-Sum([Продажа].[Количество]) AS Остаток
FROM Склад RIGHT JOIN Продажа ON (Склад.Номер_партия = Продажа.Номер_партия) AND (Склад.Название = Продажа.Название)
GROUP BY Склад.Название, Склад.Номер_партия;


Еще одна таблица добавил: "Номер_партия"
Посмотрите пожалуйста!
Спасибо!
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315704
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abisma2008,
Не таблица, а "Столбец" добавил)
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315814
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abisma2008,
нарисуйте результат в виде таблички, что вы хотели из ваших данных получить?
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315838
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimportAbisma2008,
нарисуйте результат в виде таблички, что вы хотели из ваших данных получить?
Таблица="Склад":
НазваниеНомер_партияКоличествоРучка156Книга224Линейка226Линейка235Книга232Книга112Книга212Книга12Ручка25Ручка20Книга221Линейка165Линейка168

Таблица="Продажа":
НазваниеНомер_партияКоличествоКнига12Книга21Ручка13Ручка24Книга21Линейка13Линейка11

Запрос="Сумма_склада":
НазваниеНомер_партияSum-КоличествоКнига114Книга289Линейка1133Линейка261Ручка156Ручка25

Запрос="Сумма_продажа":
НазваниеНомер_партияSum-КоличествоКнига12Книга22Линейка14Ручка13Ручка24

Вот то чего я хочу:
Запрос="Остаток":
НазваниеНомер_партияОстатокКнига112Книга287Линейка1129Ручка153Ручка21


В таком случаи всё получается, но здесь три запроса. Я хочу сделать единственный запрос в место одного!
Надеюсь Вы меня поняли)
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315863
КВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abisma2008,
подразумевается, вероятно, что не может быть продано больше,
чем есть на складе?
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315872
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КВВ,
Спасибо за ответ!
Завтра ваш пример посмотрю. По поводу склада здесь примерно, могу добавить на склад.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315889
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У тебя не выходит значение линейка2 в остатке т.к. ни одна из них не продана. Ты хочешь чтобы выходили и ни разу не проданные вещи в остатке.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315899
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nikolay_magaginУ тебя не выходит значение линейка2 в остатке т.к. ни одна из них не продана. Ты хочешь чтобы выходили и ни разу не проданные вещи в остатке.
Ту я забыл про "Nz"
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315920
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понял.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39315956
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316022
КВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nikolay_magagin,
Судя по сообщению Abisma2008 "Вот то чего я хочу: Запрос="Остаток":",
Номер_партия - это не количество партий, а только номер.
Ведь, ручка2 у него в этом сообщении в остатке = 1 шт. :),
что соответствует вычислениям и других остатков по партиям.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316059
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КВВAbisma2008,
подразумевается, вероятно, что не может быть продано больше,
чем есть на складе?
Вот этот вариант то чего я хотел)
Спасибо за труд!
И остальным джентльменам благодарность за участия!
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316147
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По моему мнению нельзя объединять приход с расходом в одну форму редактирования. К одной записи прибыло могут существовать несколько записей убыло или не быть записей. Поэтому первичен склад-прибыло к убыло. Остаток должен выводится по всем пунктам прибыло даже если в убыло нет такого пункта. А то выходит, что первую запись убыло нужно занести в отдельном окне, иначе название не отражается в списке. Также я думаю ограничение по внесению нужно вводить не только для названия, но и для количества. А так по моему форма движение абсурдна. Наличие таблиц предполагает внесение данных, для последующей обработки в запросе, но к ним нет форм для внесения данных. Существующая форма предполагает предварительный ручной подсчет и внесение данных, не влияя на первичные таблицы, но требуя, чтобы в первичных таблицах были внесены количественные данные.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316500
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думал не отвечать, но немного задело
nikolay_magaginПо моему мнению нельзя объединять приход с расходом в одну форму редактирования. К одной записи прибыло могут существовать несколько записей убыло или не быть записей. Поэтому первичен склад-прибыло к убыло.
Остаток должен выводится по всем пунктам прибыло даже если в убыло нет такого пункта.Это совершенно не понятно-а цифры 0 у нас нет. По моему так: по каждому товару(а не по записи прибыло) могут существовать несколько или ни одной записи убыло
nikolay_magagin А то выходит, что первую запись убыло нужно занести в отдельном окне, иначе название не отражается в списке. Таблица "товар" является обычным справочником и само собой если в ней нет наименования его не будет и в списке (новое наименование можно занести обработав событие NotInList-ещу бы я в примере делал форму на справочнике)nikolay_magaginTакже я думаю ограничение по внесению нужно вводить не только для названия, но и для количества. А так по моему форма движение абсурдна.Если Вы считаете что форма абсурдна-значит так и есть
Вот ограничение по количеству, о котором Вы говорите это да.
Если какого-то товара 100 шт занести в таблицу можно, то 101 уже низя
Наличие таблиц предполагает внесение данных, для последующей обработки в запросе, но к ним нет форм для внесения данных. Существующая форма предполагает предварительный ручной подсчет и внесение данных, не влияя на первичные таблицы, но требуя, чтобы в первичных таблицах были внесены количественные данные.[/quot]
Что надо предварительно считать? И в каких таблицах,кроме "движения", есть количественные данные (а запретить к выдаче товар, если его количество к выдаче превышает остаток очень просто)
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316542
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перефразирую поговорку: чтобы продать, что-то ненужное, нужно купить, что-то ненужное. Не может быть убыло без прибыло. А прибыло, оно прибыло. Это две разные операции. В запросе на выдачу остатка надо поставить связь все из склада к связанным в продаже. В столбце продано (при отсутствии продаж) будет null. При вычислении остатка количество прибыло минус выражение "если количество убыло null;0;количество убыло". Запрос готов на отчеты: прибыло, убыло, прибыло-убыло, остаток только от убыло и т.д. В форме продаж подстановка товара из созданного запроса по количеству>0. А ограничение не по кличеству записей, а по количеству продаваемого. Например остаток 3 и при внесении 4 выдает ошибку.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316553
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magaginПерефразирую поговорку: чтобы продать, что-то ненужное, нужно купить, что-то ненужное. Не может быть убыло без прибыло

Легко... даже в 1С розница была такая фича в настройках "Разрешить минусовые остатки", завел я например весь хлеб в классификатор и поставил заветную галочку, теперь нет надобности ездить каждый день в магазин только из-за прихода хлеба... булки продаются и спокойненько уходят в минуса, товаровед может раз месяц приехать, поставить на приход старые накладные, булки опять уйдут в плюса - можно пойти, посчитать для ревизии и опять на месяц слинять по своим делам...
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316579
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin ...В столбце продано (при отсутствии продаж) будет null.... Не null а 0 (ноль). Это таки две большие огромные разницы
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316703
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0 - данные которых однозначно нет, обличенные в знак 0. Null - данные которых нет пока, могут быть, а могут и не быть. Вычисление по значению null не производятся, поэтому надо предварительно задать для null значение. Есть приход, а продажа может быть или нет. Поэтому при связи в запросе таблиц склад к продано, ни разу не проданный товар получает значение null. Для выполнения задачи вывода остатка задаем для значения null=0.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316732
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin0 - данные которых однозначно нет, обличенные в знак 0
Как раз есть данные и они равны 0 (можно плюсовать отнимать и т.д.)
а вот Null-(пусто) его нелзя присвоить и им нельзя манипулировать (надо приводить к типу данных в поле)
строковое числовое дата время и т.д.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316753
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это ни о чем Вам не говорит....
Код: vbnet
1.
2.
3.
4.
5.
6.
?null=null
Null
?0=0
True
?0<>0
False
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316759
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuЕсли это ни о чем Вам не говорит....
Код: vbnet
1.
2.
3.
4.
5.
6.
?null=null
Null
?0=0
True
?0<>0
False


Ни о чем.
Я говорил про Null в свете полей в таблице.
Поэксперементируйте там и поймете.
Попробуйте получить итог получить если есть Null.
С уважением.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316763
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Null - это ничто. 0-математическая производная null по общему согласию обличенная в знак. Нами 0 воспринимается как знак, потому, что так сказали и настояли. Я помню как столкнулся с попыткой объяснить своим маленьким детям сколько будет1 яблоко отнять 1 яблоко. Примерный ответ ничто. Выход был только один настоять, что будет 0. Насколько я помню по истории, именно изобретения понятия 0 было одним из больших достижений математики. Работать с ничто нельзя, поэтому конечно необходимо сначала присвоить значению null данные (цифру, текст) позволяющие вам произвести нужное выражение.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316807
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,

Я это и говорю.
В VBA есть такая хитрая штука, как, "не явное приведение типов" хитрый NULL, Nothing и Тип данных "Variant"
"не явное приведение типов" в купе с Типом данных "Variant" могут сыграть злую шутку.
Советую новичкам обязательно почитать об этом.
В качестве затравки создайте таблицу с тремя полями:
" Поле1 " - Тип данны Целое
" Поле2 "- Тип данны Текстовое
" Поле3 "- Тип данны Целое
Создайте запрос и в Поле3 вставте Выражение1: [Поле1]+[Поле2]
внесите немного данных в Пле1 и Поле2
Если в Поле1=10 а Поле2=20 то в Поле3=30 (это и есть не явное приведение типов)
а если Поле2=просто текст у вас ошибка.
С уважением
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316922
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всегда нужна цель, к чему стремишься. Пути достижение цели бывают разные. Только при чем тут обсуждение null и 0.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316962
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin0 - данные которых однозначно нет, обличенные в знак 0
Дык к этому.
ноль 0 это число- это уже данные
а Null это ничего нет данных.
Я только хотел вас поправить.
С уважением
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316971
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конкретный ответ на Ваш вопрос:
Abisma2008Доброе утро!
Есть запрос:
Код: sql
1.
2.
SELECT Склад.Код, Склад.Название, Sum([Склад].[Количество])-Sum([Продажа].[Количество]) AS Остаток
FROM Склад RIGHT JOIN Продажа ON Склад.Название = Продажа.Название;


Скажите пожалуйста где моя ошибка?
Спасибо!
Функция SUM предполагает суммирование по всем записям запроса-то бишь их объединение в одну строку (а как объединять код или названия в одну строку?) Вот такой запрос выведет разность между ВСЕМИ товарами склада и ВСЕМИ проданными товарами
Код: vbnet
1.
2.
SELECT Sum([Склад].[Количество])-Sum([Продажа].[Количество]) AS Остаток
FROM Склад RIGHT JOIN Продажа ON Склад.Название = Продажа.Название;

а такой, то же самое, с разбивкой по товарам
Код: vbnet
1.
2.
3.
SELECT Продажа.Название, Sum([Склад].[Количество])-Sum([Продажа].[Количество]) AS Остаток
FROM Склад RIGHT JOIN Продажа ON Склад.Название = Продажа.Название
GROUP BY Продажа.Название;

(хотя и то и другое какая-то абракадабра по смыслу)
...
Рейтинг: 0 / 0
Помогите по запросу
    #39316999
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пы-Сы:
вернее и то и другое всего-навсего остатки причем первый запрос действительно абракадабра,а второй остатки по товарам которые всегда считаются как разность сумм прихода(Склад) и расхода(продано)-поздравляю Вас с попыткой изобретения велосипеда
...
Рейтинг: 0 / 0
Помогите по запросу
    #39317015
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT Склад.Название, Склад.Номер_партия, [Количество склад]-IIf(IsNull([Количество продажа]),0,[Количество продажа]) AS Остаток, Sum(Склад.Количество) AS [Количество склад], Sum(Продажа.Количество) AS [Количество продажа]
FROM Склад LEFT JOIN Продажа ON (Склад.Название = Продажа.Название)
GROUP BY Склад.Название, Склад.Номер_партия;
При такой постановке в запросе появятся также ни разу не проданные товары с пустым значением по количеству товара -null. А так как у нас математические вычисления, то для Null значения Количество продажа устанавливаем его аналог в математике (который компьютер воспринимает) 0.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39317121
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,
А написать в условии отбора <>0 или >0 до этого додуматься невозможно..
И ни каких сомнений в правильности структуры не возникает...
...
Рейтинг: 0 / 0
Помогите по запросу
    #39317129
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПыСы: И поставить значение по умолчанию для числового поля 0 ....
...
Рейтинг: 0 / 0
Помогите по запросу
    #39317163
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abisma2008Сут запроса вот такая суммируем все приходи и отнимает суммирование продажа
язык форума русский. Не знаю, на каком языке вы говорите, но нужно на русском.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39317171
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос для какого поля значение по умолчанию 0.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39317207
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,
естессно количество
посмотрите еще раз то,что Вам предлагалось: пример БД-её структура(таблицы и связи)-формы,запросы и отчеты Ваше дело...
Вообще Вы просили конкретный ответ на конкретный вопрос-так он Вам дан, но полностью проигнортрован
За сим разрешите откланятся
...
Рейтинг: 0 / 0
Помогите по запросу
    #39317223
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть два количества прибыло и убыло. Если в прибыло Стакан-5, а в убыло нет записей по стакану, то всегда в запросе в столбце количество прибыло будет 5, а количество убыло стакан будет null, ставь значение по умолчанию ноль или нет. Конечно человек хочет данные остатка обязательно при наличии прибыло+убыло. Но в дальнейшем аппетиты растут. А почему не получить весь остаток товара? Сделав данный запрос можно проставляя условия (<>0, >0, notisnull) получать требуемый список.
...
Рейтинг: 0 / 0
Помогите по запросу
    #39317336
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magaginЕсть два количества прибыло и убыло. Если в прибыло Стакан-5, а в убыло нет записей по стакану, то всегда в запросе в столбце количество прибыло будет 5, а количество убыло стакан будет nullДо тех пор пока не будет создана запись убыло стакан 5 остаток всегда будет равен 5,а записей с заполненной графой выдано не будет вообще.
Еще раз(думаю последний) откланиваюсь
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите по запросу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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