powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / справочник товаров и остатки
12 сообщений из 12, страница 1 из 1
справочник товаров и остатки
    #38609661
kolyan2288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу послушать советы, проектирую программу склад.
Таблицы в уменьшенном варианте:
Таблица материалов tb_materials (id_materials , name_materials)
Таблица проводка tb_provodka (id_pka, key_materials_pka, amount_pka)

Задача:
Показывать остатки всех товаров.

Реализация:
Код: sql
1.
2.
3.
4.
SELECT key_materials_pka,name_materials, sum(amount_pka) AS kol 
FROM tb_provodka 
LEFT OUTER JOIN tb_materials ON key_materials_pka=id_materials 
GROUP BY  key_materials_pka



Результат запроса видим какой остаток на складе, но мне нужно видеть и те материалы которые добавлены в таблице материалов их по сути кол-во ноль.

Мои фантазии решения:
1. При добавления нового материала сразу создавать запись в проводке с кол-вом 0.
2. Переписать запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT key_materials_pka,name_materials,

CASE  WHEN sum(amount_pka) IS NULL   THEN 0 ELSE sum(amount_pka)  END,   

FROM tb_materials
LEFT  OUTER JOIN tb_provodka ON key_materials_pka=id_materials 
GROUP BY  id_materials  



Хочу послушать программистов какие варианты вы используете)))
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609675
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понятно, что такое проводка? Это только приход на склад?
А где расход? Для остатка как минимум надо учитывать (приход-расход).
Будет тип операции? Надо ли учитывать отдельно такое понятие как "возврат"/"отмена" или в вашем случае это хорошо уляжется в две проводки "приход" + "расход"? Или у вас будет "сторнировка" не верной операции и проводка по новой? Или достаточно просто удалить запись из таблицы, не храня историю?

второй блок вопросов:
насколько интенсивно будет вестись изменение проводок? Каков порядок операций?
Возможна ситуация, когда будет полезно ввести понятие "остаток" отдельным полем и при формировании проводок изменять значение этого поля, тогда селект на остатки вообще тривиален и быстр. Но при этом будут доп. проблемы в виде контролирования целостности данных/сверок и т.п..
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609713
kolyan2288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Расход и приход есть одна таблица проводка.
Для остатка суммируем столбец кол-во по группировке материалов получаем остаток.
"возврат"/"отмена" есть столбец тип операции в проводке.

насколько интенсивно будет вестись изменение проводок? Каков порядок операций?
пришло ушло, интенсивность маленькая.

Возможна ситуация, когда будет полезно ввести понятие "остаток" отдельным полем и при формировании проводок изменять значение этого поля, тогда селект на остатки вообще тривиален и быстр. Но при этом будут доп. проблемы в виде контролирования целостности данных/сверок и т.п..

Именно поэтому решил делать все операции в одной таблице проводка.
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609725
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolyan22882. Переписать запрос
И это правильно. С какого перепою у тебя таблицы именно так соединяются? Неужели могут
быть проводки по несуществующим материалам?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609743
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДля остатка суммируем столбец кол-во по группировке материалов получаем остаток.
т.е. планируете операции прихода фиксировать со знаком "плюс" в столбце кол-во,
операции расхода со знаком "минус"?

авторИменно поэтому решил делать все операции в одной таблице проводка.
Не совсем видимо мысль раскрыта. "движение товаров" в одной - это нормально.
Но вот остаток на складе - тут вопрос к интенсивности. Полезно иметь уже готовую цифру сколько осталось,
а не каждый раз ее рассчитывать.
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609761
kolyan2288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovkolyan22882. Переписать запрос
И это правильно. С какого перепою у тебя таблицы именно так соединяются? Неужели могут
быть проводки по несуществующим материалам?..


Dimitry не могут, соединил таблицу материалов с проводкой, а где проводка в количество имеет Null (т е например материал добавлен в тб материалов, а в проводке еще операции с ней не проводили) тогда печатаем 0.
пока только так смог написать запрос
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609762
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikle83остаток на складе - тут вопрос к интенсивности. Полезно иметь уже готовую
цифру сколько осталось, а не каждый раз ее рассчитывать.
Это сильно СУБД-зависимый вопрос.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609765
kolyan2288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Mikle83]авторт.е. планируете операции прихода фиксировать со знаком "плюс" в столбце кол-во,
операции расхода со знаком "минус"?


Да
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609858
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolyan2288пока только так смог написать запрос
В таком случае настоятельно рекомендую тщательно изучить http://ibase.ru/devinfo/joins.htm
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609864
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolyan2288Хочу послушать советы, проектирую программу склад.
Таблицы в уменьшенном варианте:
Таблица материалов tb_materials (id_materials , name_materials)
Таблица проводка tb_provodka (id_pka, key_materials_pka, amount_pka)

Задача:
Показывать остатки всех товаров.

Реализация:
Код: sql
1.
2.
3.
4.
SELECT key_materials_pka,name_materials, sum(amount_pka) AS kol 
FROM tb_provodka 
LEFT OUTER JOIN tb_materials ON key_materials_pka=id_materials 
GROUP BY  key_materials_pka



Результат запроса видим какой остаток на складе, но мне нужно видеть и те материалы которые добавлены в таблице материалов их по сути кол-во ноль.

Мои фантазии решения:
1. При добавления нового материала сразу создавать запись в проводке с кол-вом 0.
2. Переписать запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT key_materials_pka,name_materials,

CASE  WHEN sum(amount_pka) IS NULL   THEN 0 ELSE sum(amount_pka)  END,   

FROM tb_materials
LEFT  OUTER JOIN tb_provodka ON key_materials_pka=id_materials 
GROUP BY  id_materials  



Хочу послушать программистов какие варианты вы используете)))
По поставленному вопросу конечно второй вариант.
А по сути всё-таки не очень хорошо иметь в столбце amount отрицательное количество. Если ещё не поздно перепроектировать БД, я бы добавил столбец sign, в котором для прихода пишем 1, для расхода -1
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609885
kolyan2288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovkolyan2288пока только так смог написать запрос
В таком случае настоятельно рекомендую тщательно изучить http://ibase.ru/devinfo/joins.htm

Спасибо, буду изучать
...
Рейтинг: 0 / 0
справочник товаров и остатки
    #38609930
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Fontaineне очень хорошо иметь в столбце amount отрицательное количество
Чем? Пользователи обычно адекватно воспринимают минус в журнале движений.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / справочник товаров и остатки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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