Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / нужен алгоритм расчета дней товара в аренде / 9 сообщений из 9, страница 1 из 1
09.04.2010, 17:01
    #36571327
Макс375
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужен алгоритм расчета дней товара в аренде
Суть проблемы:
Сдаю я товар в аренду и заношу все операции в таблицу, состоящую из полей: "фирма", "товар", "движение", "дата" (в поле "движение" только два варианта - приход / уход).

Задача - получить отчет за весь период учета, в котором отражается: сколько конкретный товар пробыл в аренде у конкретной фирмы.

Один и тот же товар уходит в аренду и приходит из аренды по несколько раз. В таблице получается несколько записей по одному и тому же товару. Простое вычисление разницы по датам первой и последней записи по товару не работает, т.к. товар мог в этот промежуток мог повторно сдаваться в аренду.

Посоветуйте, как правильно сформировать алгоритм расчета?
Наверно такой расчет правильнее делать в запросе SQL?
...
Рейтинг: 0 / 0
09.04.2010, 17:18
    #36571389
каланча
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужен алгоритм расчета дней товара в аренде
Макс375Суть проблемы:
Сдаю я товар в аренду и заношу все операции в таблицу, состоящую из полей: "фирма", "товар", "движение", "дата" (в поле "движение" только два варианта - приход / уход).А как бы Вы сами назвали эту таблицу? Какие сущности там хранятся?
...
Рейтинг: 0 / 0
09.04.2010, 17:31
    #36571425
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужен алгоритм расчета дней товара в аренде
Будем считать, что таблица "правильная", то есть нет двух подряд уходов или приходов и первым был уход для каждого товара. Тогда как-то так на псевдо-коде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select Т.Фирма, Т.Товар, SUM(Т.РазностьДат)
from
(select Т.Фирма, Т.Товар, 
Т.Дата - COALESCE(MIN(Т2.Дата),&ТекДата) РазностьДат
from Таблица Т
left join Таблица Т2
on (Т.Фирма=Т2.Фирма) and (Т.Товар=Т2.Товар) and (Т.Дата<=Т2.Дата) and (Т2.Движение=&Приход)
where Т2.Движение=&Уход
group by Т.Фирма, Т.Товар, Т.Дата) Т
group by Т.Фирма, Т.Товар

С уважением, Naf
...
Рейтинг: 0 / 0
09.04.2010, 17:35
    #36571438
WadimX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужен алгоритм расчета дней товара в аренде
SELECT "товар", "фирма", SUM("дата_по"-"дата_с") "кол-во дней"
FROM
(
SELECT A1."товар", A1."фирма", A1."дата" "дата_с", COALESCE(MIN(A2."дата"), GETDATE()) "дата_по"
FROM "аренда" A1 LEFT JOIN "аренда" A1 ON A1."фирма"=A2."фирма" AND A1."товар"=A2."товар" AND A1."дата"<A2."дата" AND A2."движение"='приход'
WHERE A1."движение"='уход'
GROUP BY A1."товар", A1."фирма", A1."дата"
) X
GROUP BY "товар", "фирма"

Как-то так... навскидку
...
Рейтинг: 0 / 0
09.04.2010, 17:39
    #36571452
WadimX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужен алгоритм расчета дней товара в аренде
Да, <= для дат будет правильнее
...
Рейтинг: 0 / 0
12.04.2010, 10:10
    #36573394
Макс375
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужен алгоритм расчета дней товара в аренде
каланчаА как бы Вы сами назвали эту таблицу? Какие сущности там хранятся?
Таблица называется "общая".
Хранятся в таблице все записи по движению товара по складу.
...
Рейтинг: 0 / 0
12.04.2010, 10:17
    #36573419
Макс375
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужен алгоритм расчета дней товара в аренде
NafТогда как-то так на псевдо-коде
Простите неуча...
А как вставлять "псевдокод" в Access? эту нужно делать в VB?
...
Рейтинг: 0 / 0
12.04.2010, 10:23
    #36573435
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужен алгоритм расчета дней товара в аренде
Макс375NafТогда как-то так на псевдо-коде
Простите неуча...
А как вставлять "псевдокод" в Access? эту нужно делать в VB?Это значит, что надо адаптировать запрос под тот диалект SQL, который вы используете (Access).
...
Рейтинг: 0 / 0
12.04.2010, 10:31
    #36573463
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужен алгоритм расчета дней товара в аренде
Уже где-то тут обсасывалось.

Важный вопрос - краевые эффекты, раз речь идет о отчете за период.
Например, как считать если начало аренды началось до начала периода ?
Нужна функция получения дат начала и конца аренды в рамках указанного периода.
Затем сложить все "концы дат" и вычесть сумму "начал дат". Дельта и будет длительностью аренды в днях.
Естественно при отстутствии ошибок типо два начала или два конца подряд. :)
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / нужен алгоритм расчета дней товара в аренде / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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