テーブルの同じフィールドに複数のフィルタを含むSQLクエリを書くのに役立つ必要があります。指定された子を持たない親(ジョブ)を取得するSQLクエリ
私は以下のように2つのテーブルを持っています。
Job
テーブル:
ID JobId Name StartTime FinishTime
01 001 A 2105:12:10 14:00:00 2105:12:10 14:00:10
02 002 A 2105:12:10 14:00:00 2105:12:10 14:00:00
03 003 A 2105:12:10 14:00:00 2105:12:10 14:00:00
04 004 A 2105:12:10 14:00:00 2105:12:10 14:00:00
と
Status
表:私はFINISHED状態を持つジョブを照会する必要があり、これらの2つのテーブルから
ID Status Timestamp JobId
01 Started 2105:12:10 14:00:00 001
02 Step_1_Started 2105:12:10 14:00:00 001
03 Step_1_Finished 2105:12:10 14:00:05 001
04 Step_2_Started 2105:12:10 14:00:05 001
05 Step_2_Finished 2105:12:10 14:00:10 001
06 Finished 2105:12:10 14:00:10 001
........................................................
07 Started 2105:12:10 14:00:00 002
08 Step_1_Started 2105:12:10 14:00:00 002
09 Step_1_Failed 2105:12:10 14:00:02 002
........................................................
10 Started 2105:12:10 14:00:00 003
11 Step_1_Started 2105:12:10 14:00:00 003
12 Step_1_Failed 2105:12:10 14:00:02 003
13 Step_1_Canceled 2105:12:10 14:00:04 003
........................................................
14 Started 2105:12:10 14:00:00 004
15 Step_1_Started 2105:12:10 14:00:00 004
キャンセル、失敗し、ACTIVEどこ
- 終了:ステータスが「完了」のジョブ。
- CANCELED:ステータス '%キャンセル済み'( '完了')のジョブ。
- FAILED:ステータスが '失敗しました'( '%キャンセル済み'または '終了済み')のジョブ。
- アクティブ: '%開始済み'ステータス( '%失敗'または '%キャンセル'または '終了済み')を持つジョブ。
は、私は他のクエリのために助けが必要
SELECT
j.jobid
FROM
Job j
JOIN
status js ON j.jobid = js.jobid
WHERE
j.startTime >= '2015:12:10'
AND j.startTtime < '2015:12:20'
AND js.status = 'Finished';
正常に動作しますFinished
に対して次のSQLクエリを持っています。
予想される出力:事前に
FINISHED: 001
CANCELED: 003
FAILED: 002
Active: 004
感謝。
Oracleまたはmysql?これらは2つの異なる製品です。これまで何をしていますか? – Shadow
ネストされた選択を使用すると、何か試してみることができますか? –
データベース固有のクエリが不要なので、Oracleとmysqlを追加しました。 – jitk