2017-05-31 16 views
-2

您能否幫我構建一個查詢以獲得以下產品的產品 -
兩個表 - Table_A(產品)和Table_B (產品和庫存) 我需要從表A中得到所有產品,這些產品或者不在表B中,或者如果它們存在於B中,則它們在B中具有庫存= 0。從A獲得所有的產品,或者不在B中或者在B中有庫存= 0

以下是我'已經嘗試過 -

SELECT PROD_ID FROM TABLE_A 
WHERE PROD_ID NOT IN (SELECT PROD_ID FROM TABLE_B) 
OR PROD_ID IN (SELECT PROD_ID FROM TABLE_B WHERE STOCK = 0) 

該查詢永遠運行,所以我不知道它是否提供了正確的輸出。如果它是正確的,我會找到優化性能的方法。

+0

作業?你有什麼嘗試? – jarlh

+0

@jarlh我已將查詢添加到我的問題。請幫助。 –

+0

搜索左加入 – Sparky

回答

0

沿着下面的查詢的行應該工作。

select prod_id 
from table_a 
where prod_id not in (select prod_id from table_b where stock > 0) 
; 

這假定prod_id約束爲NOT NULL在table_b

+0

它也假定股票不能是負數,這可能是也可能不是一個有效的假設...... – Boneist

+0

@骨骼 - 實際上,技術上(使用「股票」的技術定義),不,股票不能負。當然,OP的業務可能會以非技術方式使用該術語,但我對此表示懷疑。 – mathguy

+0

嗨@mathguy,你能解釋一下這是如何工作的嗎? Table_B有大量存貨> 0的產品。因此'not exists()'中的條件將始終爲真。 –

相關問題