これが意味をなさない場合は、最初に謝罪させてください。私はそれを書いて自分で理解するのに時間がかかりました。わかりにくいところがありましたら申し訳ありません。私はこれに不慣れで、説明するために最善を尽くしました。また、質問のタイトルが適切でない場合は、お詫び申し上げます。誰かがより良いタイトルを知っている場合は、編集するか、必要な変更を加えてください.
JOBS と PHASES の 2 つのテーブルがあります。
JOBS
Id
Job_Type (ex. 0 = import)
Title
PHASES
Id
Jobs_Id
Phase_Type
Title
Start_Time
End_Time
Duration
各 job/job_type は任意の数のフェーズを持つことができます - 各フェーズには開始、終了、および継続時間があります
PHASES テーブルからフィールド job_id、start_time、end_time、duration を選択し、各 job_type のすべての期間を合計したい (例: job_type = 0 はインポート ジョブ)
SELECT jobs_id, start_time, end_time, duration FROM phases
JOIN jobs ON phase.jobs_id = jobs.id
WHERE jobs.job_type=0
return jobs_id start として最も早い開始時刻を返す end として最後の endtime を返す それらすべての合計期間を返す TotalDuration
例、次のデータが JOBS テーブルにあった場合 (Id、Job_Type、Title)
1, 0, Import
次のデータはPHASESテーブルにありました(id、job_id、phase_type、title、start、end、duration)
1, 1, 1, 0, Run Preprocessor, 10/18/2012 8:52 PM, 10/18/2012 9:00 PM, 00:08:00
2, 1, 2, 1, Massage Data, 10/18/2012 9:00 PM, 10/18/2012 9:05 PM, 00:05:00
3, 1, 3, 2, Run Postprocessor, 10/18/2012 9:05 PM, 10/18/2012 9:07 PM, 00:02:00
4, 2, 1, 0, Run Preprocessor, 10/18/2012 9:15 PM, 10/18/2012 9:20 PM, 00:05:00
5, 2, 2, 1, Massage Data, 10/18/2012 9:20 PM, 10/18/2012 9:25 PM, 00:05:00
6, 2, 3, 2, Run Postprocessor, 10/18/2012 9:30 PM, 10/18/2012 9:35 PM, 00:05:00
上記は、2 つのジョブ (job_type = 0) の情報 (フェーズ) を示しています。
フェーズを組み合わせて、最早開始日と最遅終了日、および合計期間を表示できる SQL ステートメントが必要です。この情報が返されることを期待します (Job_id、Start、End、TotalDuration)
1, 10/18/2012 8:52 PM, 10/18/2012 9:07 PM, 00:05:00
2, 10/18/2012 9:15 PM, 10/18/2012 9:35 PM, 00:15:00