powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по SQL (запрос)
12 сообщений из 12, страница 1 из 1
Вопрос по SQL (запрос)
    #39454597
Здравствуйте,
Уважаемые знатоки SQL/
Подскажите, (самые общие рекомендации) как написать запрос для решения следующей задачи:
Есть 2 таблицы

Таблица 1 ОСТАТКИ имеет поля
ТОВАР
Дата
Остаток шт

Таблица 2 ДВИЖЕНИЕ имеет поля
ТОВАР
ДАТА
Код Транзакции (где 1-это Приход товара, а 2- это расход товара)
Остаток шт

Мне необходимо проссумировать поле ОСТАТОК для выбранного товара в таблице ДВИЖЕНИЕ по коду 1,
затем проссумировать поле ОСТАТОК для выбранного товара этой же таблицы по коду 2
Посчитать разность между суммой по коду1 и суммой по коду 2 ( то есть приход - расход)
А затем, к полученной разности добавить остаток для этого же товара из таблицы ОСТАТКИ ( поле Остаток_шт)

Скажите, как в самом общем виде организовать разность между приходом и расходом?
А затем к ней прибавить остаток из таблицы 1?
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39454605
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр_022, как на мой взгляд - всю движуху товара крутить только на двух таблицах - забодаетесь. Попробуйте лучше продумать базу, распределить тот же приход, расход и остатки в разных таблицах (даже - в связках таблиц). Тогда и намного проще и логичнее будет организовать статистику.
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39454656
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Таблице 1 (Остатки) поле ТОВАР - уникально, или есть дубли? если второе - для одного товара ДАТА уникальная или есть дубли?
В таблице 2 (Движение) для любого товара дата гарантированно больше максимальной даты из первой таблицы? гарантированно не меньше? может быть меньше? Поле Остаток - это на самом деле количество (т.е. на сколько изменилось) или действительно остаток (сколько стало после изменения)?
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39454675
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр_022,

я делаю другую схему таблиц
Таблица 1 ОСТАТКИ имеет поля
ТОВАР
Дата
Остаток входной
Остаток выходной

Таблица 2 ДВИЖЕНИЕ имеет поля
ТОВАР
ДАТА
Код Транзакции (где 1-это Приход товара, а 2- это расход товара)
количество

остатки считаю запросом, не портя входного остатка
можно сосчитать остаток на любой день
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39454678
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыла убрать дату

Таблица 1 ОСТАТКИ имеет поля(это и справочник товаров)
ид ТОВАР
наименование товар
ед изм
Остаток входной
Остаток выходной
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39454716
Отдельные таблицы для прихода и расхода - плохой совет.
Получить в запросе отдельно приход и расход легко:
IIF([Код Транзакции] = 1, [Остаток шт], 0) As Приход,
IIF([Код Транзакции] = 2, [Остаток шт], 0) As Расход

Вы не объяснили задачу. Движение и остатки считаются по каждой дате или за период?
Что касается Таблица 1 ОСТАТКИ, то тут есть вопросы. В ней есть остатки по товару на каждую дату, присутствующую в Таблица 2 ДВИЖЕНИЕ или надо искать ближайшую предшествующую?
Вообще, проще и логичнее хранить входящие остатки на начало учета (одна запись для каждого товара).

ЗЫ. По хорошему для списка товара нужна отдельная таблица, а в ваших таблицах хранить значения ключей из нее.
ЗЗЫ. Просто интересно, почему в Таблица 2 ДВИЖЕНИЕ поле называется "Остаток шт"?
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39454769
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ), кому как.
У меня, например, пара таблиц (главная + подчинённая) - на набивку прихода, две пары - для двух касс, три пары - для хранения архивов прихода/расхода, + таблица на остатки. В итоге приход и две кассы одновременно работают с одной базой, не мешая друг другу. Причём работают только с непосредственной "движухой", всё проведенное ранее - в архиве.
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39454844
Анатолий ( Киев ),
Здравствуйте, Анатолий.
Это не моя база.
Был на собеседовании в одной фирме по вакансии маркетолог-аналитик.
Там дали такое задание.
Я его,естественно, не сделал.
Просто интересно, как его решить.
В таблице 1 остаток каждого товара на последнюю дату месяца до 31 марта 2017г
А в таблице 2 движение каждого товара на каждую дату, начиная с 01 апреля 2017г.
В таблице 2 поле ОСТАТОК шт названо неправильно. Правильней - ДВИЖЕНИЕ ТОВАРА.

Задание было:
Выбери товар АРБИДОЛ и дай остаток на 18 апреля 2017г
ПОэтому я решил, что нужно взять остаток арбидола на 31 марта из таблицы1.
И прибавить к нему разность между приходом и расходом по арбидолу за 01-18 апреля
Далее UNION ALL... GROYP BY....
Но вот как посчитать разность в таблице 2 между приходом и расходом не знаю....
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39454854
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр_022как посчитать разность в таблице 2 между приходом и расходом не знаю....
Код: vbnet
1.
SUM(IIF [Код транзакции] = 1; [Движение товара]; -[Движение товара])
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39454855
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У IIF скобки потерялись... ну да пофиг.
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39455179
Ну, если в "ОСТАТКИ" для АРБИДОЛ только одна запись, то можно так:
Код: sql
1.
2.
3.
4.
SELECT [ДВИЖЕНИЕ].[ТОВАР], NZ(First([ОСТАТКИ].[Остаток шт]),0) + Sum(IIF([ДВИЖЕНИЕ].[Код транзакции] = 1; [ДВИЖЕНИЕ].[Движение товара]; -[ДВИЖЕНИЕ].[Движение товара]))
FROM [ДВИЖЕНИЕ] LEFT JOIN [ОСТАТКИ] ON [ДВИЖЕНИЕ].[ТОВАР] = [ОСТАТКИ].[ТОВАР]
WHERE ([ДВИЖЕНИЕ].[ТОВАР] = 'АРБИДОЛ') AND ([ДВИЖЕНИЕ].[ДАТА] < #04/18/2017#)
GROUP BY [ДВИЖЕНИЕ].[ТОВАР]

Если запись в "ОСТАТКИ" есть всегда, даже при остатке =0, то можно обойтись без NZ() и вместо LEFT JOIN просто JOIN. Кроме того, для единственного товара можно обойтись и без GROUP BY.
...
Рейтинг: 0 / 0
Вопрос по SQL (запрос)
    #39457693
Благодарю за консультации!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по SQL (запрос)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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