0

私は3つのテーブルを持っています。TestOptionsTable には、計測器で実行されるテストのリストが含まれています。

2 番目のテーブル CreateScript は、テスト中に実行するスクリプトを格納するテーブルです。これらのスクリプトには、TestOptionsTable に保存されているいくつかのテストの選択が含まれています。スクリプトが実行され、テストが 1 つずつ画面に表示されます。

各テストの結果は画面に入力され、TestResultsTable に保存されます。保存すると、IsTestComplete 列は 1 でマークされ、データ型は BIT になります。

スクリプトの実行中にユーザーが中断され、個々のテストがまだ実行されていない場合があります。テストが再開したら、まだ完了していないスクリプトのテストのリストを表示したいと考えています。結果テーブルにそのテストのエントリがない場合は、基本的に TestOptions および CreateScript からデータを選択します。これまでのところ私はこれを持っていますが、何も返していません:

select TestType,TestName, Limits 
FROM CreateScriptTable 
inner join TestOptionsTable on CreateScriptTable.TestName = TestOptionsTable.TestName 
inner join TestResultsTable on CreateScriptTable.TestName = TestResultsTable.TestName
WHERE CreateScriptTable.InstrumentType= 'Instrument1' 
AND TestResultsTable.IsTestComplete <> 1
ORDER BY [Index] ASC, TestName

IsTestComplete 列が結果テーブルで true に設定されていない場合にデータが返されるが、データが返されないという考え方です。誰にもアイデアはありますか?ありがとう!

編集: 期待される出力は以下のようなものです。テスト名、カテゴリ、およびテストの制限付き

Full Test 1     Visual              10  12
test1           Visual              0.1 0.22
Test 34         Visual              121 2222
Flow Test       As Found            1   1.2
Test 2          As Found            1   1.1
Test 3          As Left             85  105
Test 6          As Left             95  103

不完全なテストは、テスト結果テーブルには表示されません。結果テーブルにないテストを CreateScript から選択したいと思います。

4

1 に答える 1

1

あなたは言う

不完全なテストは、結果テーブルにまったく表示されません。

つまり、INNER JOINを使用して、最初の2つのテーブルを結果に関連付けることはできません。
おそらく、次のようにLEFTJOINを使用してクエリを書き直す必要があります。

select TestType,TestName, Limits 
FROM CreateScriptTable 
inner join TestOptionsTable on CreateScriptTable.TestName = TestOptionsTable.TestName 
left join TestResultsTable on CreateScriptTable.TestName = TestResultsTable.TestName
WHERE CreateScriptTable.InstrumentType= 'Instrument1' 
AND TestResultsTable.IsTestComplete IS NULL
ORDER BY [Index] ASC, TestName
于 2013-01-02T11:32:10.773 に答える