[英]SQL Selecting from one table with WHERE clause on the joined tables
我有三張桌子。 TestOptionsTable包含要在儀器上執行的測試的列表。
第二個表CreateScript是用於存儲要在測試期間運行的腳本的表。 這些腳本包含一些存儲在TestOptionsTable中的測試的選擇。 腳本將運行,測試將一一顯示在屏幕上。
每個測試的結果都在屏幕上輸入並存儲在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 Column尚未設置為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中選擇結果表中沒有的任何測試。
你說
結果表中將根本不存在任何不完整的測試。
這意味着您不能使用INNER JOIN將前兩個表與結果相關聯。
可能您應該像這樣用LEFT JOIN重寫查詢
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.