2015-11-11 33 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总是有价值的,在这种情况下,你可以在任何情况下使用任何一个字段。没有必要同时使用两者。 –

相关问题