0

私は 3 つのテーブルを持っています。1 つは工場労働者がバッチに入れて完了するタスクであるタスクです。これは別のテーブルで、各タスクには batch_id があり、複数のタスクは同じ batch_id を持つことができます。3 番目のテーブルは batch_log で、誰かがバッチで作業したすべての時間が、一意の ID、batch_id、その人のユーザー ID、start_time、および end_time の形式で記録されます。

各タスクには、秒単位の Estimated_recurring 時間と秒単位の Estimated_nonrecurring 時間があります。レーザー切断、バリ取り、塗装などのタスクであるかどうかを表すタスク テーブルのフィールドである operation_id でグループ化された両方のフィールドの合計を取得しようとしています。

問題は、time_period 中に 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

タスク テーブル内の複数のエントリが同じバッチを持つ可能性があるため、実際よりも高い見積もりが得られるのではないかと心配しています。

4

1 に答える 1

1

バッチログファイルにあったタスクに基づいた時間のみが必要なため、投稿したものは間違いなく機能しません.

Tasks、Batches、および BatchLog の 3 つのテーブルがあるとします。

あなたはこれが欲しいでしょう:

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 に答える