2014-03-27 66 views
0

這裏是我的SQL查詢:SQL JOIN有和條款與一些一些條件

SELECT run.RN_CYCLE_ID ,test.[TS_EXEC_STATUS] , count(test.[TS_EXEC_STATUS]) 
FROM [td].[TEST] test 
INNER JOIN [td].[RUN] run 
ON test.TS_TEST_ID = run.RN_TEST_ID 
And run.RN_TEST_ID IN 
    (SELECT DISTINCT rn_test_id FROM [td].[RUN] WHERE [RN_CYCLE_ID] IN (12973 , 13794)) 
GROUP BY test.[TS_EXEC_STATUS] , run.RN_CYCLE_ID order by run.RN_CYCLE_ID; 

這表明不只是RN_CYCLE_ID數據 - 12973和13794.

但也爲一些其他RN_CYCLE_ID的。

我該如何解決這個問題?

+0

可能是錯的,但不應該你和run.RN_TEST_ID在實際上是WHERE run.RN_TEST_ID IN? – Mike

+0

@Mike在WHERE條件下也嘗試了同樣的查詢,而不是AND,但仍然結果相同:( – br001

+0

我得到了問題 - :run.RN_TEST_ID IN(SELECT DISTINCT rn_test_id FROM [td]。[RUN] WHERE [RN_CYCLE_ID] IN (12973,13794)) 運行和測試表具有一對多關係,因此相同的test.RN_TEST_ID出現在多次運行中[RN_CYCLE_ID] – br001

回答

0
SELECT run.RN_CYCLE_ID ,test.[TS_EXEC_STATUS] , count(test.[TS_EXEC_STATUS]) 
FROM [td].[TEST] test 
    INNER JOIN [td].[RUN] run 
    ON test.TS_TEST_ID = run.RN_TEST_ID 
WHERE run.[RN_CYCLE_ID] IN (12973 , 13794) 
GROUP BY test.[TS_EXEC_STATUS] , run.RN_CYCLE_ID 
order by run.RN_CYCLE_ID; 
0

@ BR001: 您好,歡迎#1,

如果您嘗試使用where代替And,它也沒有工作,那麼我會說你應該打破你的查詢,並檢查每水平。 你可以做的步驟:

1)刪除group byorder by - 然後檢查結果。

2)檢查inner query是否給出正確的結果或不 - 檢查

SELECT DISTINCT rn_test_id FROM [td].[RUN] WHERE [RN_CYCLE_ID] IN (12973 , 13794) 

3)檢查與條件只有一個 - 那就是,檢查[RN_CYCLE_ID] = 12973[RN_CYCLE_ID] = 13794和檢查結果。

4)此外,在每一步檢查您沒有任何損壞的數據。

否則,我想查詢是正確的。(至少我沒有看到任何錯誤)