2017-08-01 59 views
-1

我想運行一個查詢,從下表中獲取以下結果,2代表的SQL查詢驗證

BaseVehicle表

BaseVehicleId DeleteDate 

1 NULL 
2 NULL 
3 NULL 
4 NULL 

車表

VehicleId BaseVehicleId DeleteDate 

1 1 NULL 
2 1 NULL 
3 2 08-01-2017 
4 3 NULL 
5 3 08-01-2017 
6 3 NULL 
7 1 NULL 
8 2 08-01-2017 

結果表

​​

如果記錄處於活動狀態,則DeleteDate將爲空。

有一個一對多的映射BaseVehicle之間(之一) - >車輛(多)

我需要查詢獲取其中base車輛ID是不與車輛表映射以及當所有車輛的記載,與基本車輛相關,其中DeleteDate不爲空。請讓我知道如何實現這一點。

我需要fetchthe鹼車輛ID的唯一的所有相關聯的VehicleId的deleteDate的不爲空(如用於BaseVehicleId在車輛表= 2和我不應該閱讀在我的結果集,用於BaseVehicleId = 3的值)

enter image description here

+0

所以你想BaseVehicleIds的未映射BaseVehicles的Vechicle表和映射BaseVehicleIds的刪除日期不是空的車表? – Sujith

+0

@Sujith是的,謝謝你回覆 – Manju

回答

2

有時你應該想到相反的方式。

首先我們要查詢Vehicle表中沒有DeleteDate字段集的所有記錄。那些記錄和BaseVehicleId與他們連接,我們應該排除。這意味着我們只會得到BaseVehicleId,這些不存在於Vehicle表中,或者這些ID的所有記錄都有DeleteDate集。

SELECT BaseVehicleId 
FROM BaseVehicle 
WHERE BaseVehicleId NOT IN (SELECT BaseVehicleId FROM Vehicle WHERE DeleteDate IS NULL) 
+0

Yup .. +1。我誤解了問題的一部分。 – Sujith

+0

謝謝帕維爾:)它工作完美 – Manju