2011-04-17 159 views
0

這是我的查詢加入2個表

SELECT Testcases.Testcase, Tests.Result 
FROM Testcases LEFT JOIN Tests ON Tests.TestCaseID=Testcases.ID 
WHERE Tests.Release="1.1.111"; 

不過,我想,就是以測試用例,無論Tests.TestCaseID=Testcases.ID所有行。對於Tests中的每一行,Testcases中都有一個給定版本號的行。

樣品:

Testcases table 
--------------- 
ID Testcase 
1 TC-1 
2 TC-5 
3 TC-8 

Tests table 
----------- 
ID TestCaseID Result Release 
1 1   OK  1.1.111 
2 3   FAIL 1.1.111 

我想要得到的是

Testcase Result 
TC-1  OK 
TC-5  <empty> 
TC-8  FAIL 

回答

0

如果Tests.TestcaseID不等於Testcases.ID那麼它是不是一個加入。你想要得到笛卡爾產品嗎?

如果你只是想在Testcases中的所有行,然後只從TESTCASES做SELECT *。

目前還不清楚你想要什麼 - 爲什麼你不給3行表的例子?

+0

更新了原來的職位。 – Pablo 2011-04-17 11:34:06

-1

終於這個爲我工作,試試吧。

SELECT Testcases.Testcase, Tests.Result 
FROM Testcases LEFT OUTER JOIN Tests ON Tests.TestCaseID=Testcases.ID 
WHERE Tests.Release="1.1.111" 
+0

nop,這給了我所有的測試用例組合... – Pablo 2011-04-17 11:19:51

+0

編輯,這應該是你想要的結果,你測試過了嗎? – 2011-04-17 11:47:36

+0

是的,它給了我行TC-1,TC-1,TC-1,TC-2,TC-2,TC-2 ......,而應該給TC-1,TC-2,TC-3。 。請看我原來的帖子 – Pablo 2011-04-17 11:58:12

1

那麼你應該使用外部聯接:

SELECT tc.Testcase, t.Result 
FROM Testcases as tc, 
LEFT OUTER JOIN Tests as t 
ON Tests.TestCaseID=Testcases.ID 
WHERE Tests.Release="1.1.111"; 
+0

訪問不喜歡這個'as'語法,但是即使在替換之後沒有從Testcase表獲得所有記錄。我已更新原始帖子,以便更清楚 – Pablo 2011-04-17 11:32:09