2015-11-11 51 views
0

我正在使用以下查詢從External_Blk_Itm_Contracts表中檢索記錄。如何獲取不在另一個表中的已過濾記錄

因此,在BudContractSummary表中,我有TankId和ContractId。

所以在這裏我想從External_Blk_Itm_Contracts表和條件檢索所有記錄是相同TankId和contractId不應該在BudContractSummary表

但可以是不同的組合。但不相同的組合

我怎麼能做到這一點

SELECT BTANK.TANKID, BCON.CONTRACTID FROM External_Blk_Itm_Contracts EBIC 
INNER JOIN BUDTERMINALS BT ON BT.MBFTERMINALNAME = EBIC.TerminalName 
INNER JOIN BudCustomers BC ON BC.LegalName = EBIC.CustomerName 
INNER JOIN BUDCONTRACTS BCON ON BCON.CONTRACTNAME = EBIC.ContractName AND BCON.TERMINALID = BT.TERMINALID AND BCON.CUSTOMERID = BC.CustomerID 
INNER JOIN BUDTANKS BTANK ON BTANK.TERMINALID = BT.TERMINALID 
LEFT JOIN BudContractSummary BCS ON BCS.TankID = BTANK.TANKID AND BCS.ContractID = BCON.CONTRACTID 

回答

1

爲了讓不在BudContractSummary具有相同TankID和ContractID記錄,添加一個WHERE條件查找BCS.TankID IS NULL,像這樣:

WHERE BCS.TankID IS NULL 

既然你已經做了左連接上同時使用TankID和ContractID該表,WHERE條件會消除你的結果集的記錄。

+0

所以只是爲了檢查坦克ID爲空或我需要檢查坦克和contractid爲空? – user1030181

+1

您想要檢查BudContractSummary中始終具有值的字段。我假設tankid和contractid總是有價值的,在這種情況下,你可以在任何情況下使用任何一個字段。沒有必要同時使用兩者。 –

相關問題