0

我有三个表,一个是工厂工人通过将它们分批完成的任务,另一个表,每个任务都有一个batch_id,多个任务可以有相同的batch_id。第三个表是 batch_log,其中以唯一 id、batch_id、人的用户 ID、start_time 和 end_time 的形式记录了某人处理批次的所有时间。

每个任务都有一个以秒为单位的estimate_recurring 时间和一个以秒为单位的estimated_nonrecurring 时间。我正在寻找按 operation_id 分组的这两个字段的总和,它是任务表中的一个字段,表示它是否是激光切割、去毛刺、绘画等任务。

问题是我只想要在 time_period 期间具有批处理日志的任务。批次在 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

我担心我会得到比实际更高的估计,因为任务表中的多个条目可以具有相同的批次。

4

1 回答 1

1

因为您只想要基于批处理日志文件中的任务的时间,所以您发布的内容肯定行不通。

假设您有 3 个表:Tasks、Batches 和 BatchLog。

你会想要这个:

SELECT
      SUM(t.estimated_nonrecurring + t.estimated_recurring) / 3600 as work_completed,
      t.OperationID
FROM
      Tasks t
INNER JOIN
       Batches b
ON
       b.BatchID = t.BatchID
INNER JOIN
       BatchLog bl
ON
       bl.BatchID = b.BatchID
WHERE  
  bl.start_time BETWEEN DATE("2011-08-01") AND DATE(NOW())
GROUP BY
       t.OperationID
于 2011-09-23T13:59:51.350 回答