У меня есть три таблицы, одна из них - это задачи, которые фабричные рабочие выполняют, помещая их в пакеты, то есть другую таблицу, каждая задача имеет batch_id, у нескольких задач может быть один и тот же batch_id.Третья таблица - это batch_log, в котором все время, когда кто-то работал с пакетом, записывается в форме уникального идентификатора, batch_id, идентификатора пользователя, start_time и end_time.
Каждое задание имеет расчетное время повторения в секундах и примерное время повторения в секундах.Я рассчитываю получить сумму обоих полей, сгруппированных по параметру operation_id, который является полем в таблице задач, чтобы определить, является ли это задачей лазерной резки, заусенца, рисования и т. Д.
Проблема заключается в том,что я хочу только те задачи, у которых есть пакеты, которые были в batch_log в течение периода времени.Пакеты имеют несколько записей в таблице batch_log.
Вот что я пытаюсь:
SELECT
operation_id, SUM(t.estimated_nonrecurring + t.estimated_recurring) / 3600 as work_completed
FROM tasks t
INNER JOIN batch_log l on t.batch_id = l.batch_id
WHERE
l.start_time BETWEEN DATE("10:00:00") AND DATE(NOW())
AND
l.time_elapsed < "10:00:00"
GROUP BY t.operation_id
Я обеспокоен тем, что получу более высокую оценку, чем реально, поскольку несколько записей втаблица задач может иметь одну и ту же партию.