簡體   English   中英

根據另一個表中的值過濾mysql表

[英]Filter mysql table based on values from another table

我這里有 2 個表, STOCK (ID, CODE)SALES (ID, CODE, STATUS) 我想通過使用 SALES 表中的某些條件來過濾 STOCK 表的值。

例如,如果我們有這些值

庫存表

A1
A2
A3
A4
A5

並在

銷售表

A1 - Sold
A2 - Returned 
A3 - Assigned 
A2 - Sold
A4 - Returned

結果應該是:

A4
A5 

應從結果中刪除狀態為 SOLD 和 ASSIGNED 的項目。 SALES 表中狀態為 RETURNED 的項目和 STOCK 表中尚未使用的項目應可用於輸入。

我嘗試了以下代碼,但問題是,一旦將已退貨商品重新輸入到 SALES 表中,並顯示 Status SoldAssigned ,它仍然會進入結果。

SELECT t1.CODE
FROM STOCK t1
LEFT JOIN SALES t2 ON t2.CODE = t1.CODE
WHERE (t2.CODE IS NULL OR (t2.STATUS <> 'Sold' AND t2.STATUS <> 'Assigned'));

請幫我解決這個問題。

根據您的條件,以下查詢返回您的預期結果:

SELECT S1.CODE
FROM STOCK S1
LEFT JOIN (  
        SELECT t1.CODE
        FROM STOCK t1
        JOIN SALES t2 ON t2.CODE = t1.CODE
        WHERE t2.STATUS IN ('Sold', 'Assigned')) S2 ON S2.CODE = S1.CODE
WHERE S2.CODE IS NULL;

請使用給定的示例數據找到相同的LIVE DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM