Логика периодических отчетов

grav20

Новичок
Логика периодических отчетов

Добрый день. Субботняя "медитация" мне не помогла, может вы натолкнете меня на идею.
Задача: есть ряд "запросов", для каждого запроса указывается его периодичность (неделя, месяц, квартал, год)
С заданной периодичностью на эти запросы надо отвечать. Запрос можно устанавливать для нескольких участников.
Требуется:
1. Получить список выставленных задач, на которые нужно ответить в ближайшие n дней
2. Получить сколько людей ответили на выставленные тобой задачи, срок исполнения которых наступает в ближайшие n дней

Вот упрощенная структура таблиц, которую я использую

tasks {
id,
member,
period,
title
}

members {
id,
title
}

answers {
id,
task_id,
date,
title
}

tasks_members {
id,
task_id,
member_id,
}

Я не жду готового решения, конечно же, но может кто-нибудь хотя бы подскажет алгоритм или в какую сторону копать. В общем буду благодарен любой подсказке
 

Gas

может по одной?
1. К задаче обязательно крепится участник(и) ?
2. В зависимости от ответа на первый вопрос, нужно добавлять поле date - создание задачи (точка отсчёта), или в таблицу task или в tasks_members.
3. Поле period в таблице tasks какого типа?
 

HraKK

Мудак
Команда форума
В детский садиик? Вынесу из теории.
 

grav20

Новичок
для Gas
1. не очень понял вопрос, но поле members в таблице tasks - ссылка на автора (кто поставил запрос) - участники могут запросы друг-другу выставлять
2. наверное стартовую дату нужно крепить в tasks
3. поле period просто тип задачи. Все возможные виды периодичности заранее заданы (неделя, месяц, квартал, год). Я храню соответственно значения 7,30,90,365 но это просто для удобства. В принципе можно хранить week,month,kvartal,year. Это некритично

-~{}~ 04.02.08 14:54:

Есть идея
0. в таблице answers хранить не реальную дату ответа (или не только реальную), а дату крайнего срока ответа
1. посчитать сколько прошло недель (месяцев, кварталов, лет) с момента выставления задания и насчитать точки ответов, вроде отвечать 1 января, 7 января, 14 января и пр.
2. по каждой крайней дате из п.1 запросить таблицу answers и выяснить таким образом, на какие даты мы не отвечали.
3. повторить для остальных видов периодичности

Сложно, но должно сработать.
 

grav20

Новичок
для Gas
к текущей дате можно прибавлять "предупреждать за n дней" и брать не только пропущенные, но и грядущие задания.
 
Сверху