我需要顯示特定倉庫當前庫存中的所有產品,以及產品表中的所有產品。這將包括庫存量。如果該產品未在特定倉庫的庫存中列出,則需要顯示0.如何檢索庫存中的所有產品,以及SQL中的所有產品?
產品表中有33種不同的產品。這是我用來查找該信息的查詢:
SELECT DISTINCT ID
FROM S_PRODUCT;
我正在查看的倉庫專門包含14個產品。這是我用來查找的查詢。
SELECT PRODUCT_ID
FROM S_INVENTORY
WHERE WAREHOUSE_ID = 301;
我的最終結果應該列出所有33個產品ID,但只顯示倉庫301庫存中物料的數量。所有不在該庫存中的產品應該顯示數量爲0。我嘗試過外連接和其他雜項查詢,但沒有運氣。請幫忙!我應該注意到我正在使用oracle。在ERD
嘗試與外表的
截圖加入&的情況。
SELECT I.PRODUCT_ID,
CASE I.AMOUNT_IN_STOCK
WHEN NULL
THEN 0
ELSE I.AMOUNT_IN_STOCK
END AS "IN_STOCK"
FROM S_PRODUCT P
LEFT OUTER JOIN
S_INVENTORY I
ON P.ID = I.PRODUCT_ID
WHERE I.WAREHOUSE_ID = 301;
PRODUCT_ID IN_STOCK
---------- ----------
20510 69
20512 28
30321 85
30421 102
30433 35
32779 102
32861 57
40421 70
40422 65
41010 59
41020 61
41050 49
41080 50
41100 42
14 rows selected
使用AND代替WHERE 注嘗試:的空行也輸出的一部分
PRODUCT_ID IN_STOCK
---------- ----------
20510 69
20512 28
30321 85
30421 102
30433 35
32779 102
32861 57
40421 70
40422 65
41010 59
41020 61
41050 49
41080 50
41100 42
33 rows selected
如果你需要兩個表中的ALL,你不需要一個完整的外連接嗎?另外,或者將where子句移動到連接或使用或者'(i.warehouse_ID = 301或者i.warehouse_ID爲空)'Misread。只需將您的where子句移動到聯接。否子句需要。 – xQbert 2014-08-27 16:13:01
更新了我的答案以解決缺少的信息。查詢現在返回正確的數據,我們現在只需要正確顯示。 – 2014-08-27 16:59:23