2011-10-15 107 views
0

我在這裏卡住了一個查詢。我需要看看客戶X沒有購買哪些產品。也就是說,'Jane D'(客戶)尚未訂購哪些產品。以下是數據庫設計。在編碼的同時,我得到了這個客戶訂購的產品,但沒有得到他/她沒有訂購的產品。你能幫忙嗎?產品客戶列表沒有訂購?

我想要的是存貨中的產品清單,客戶還沒有訂購。不從產品表

Customer: customer_id, customer_name 

Order: order_id, customer_id,inventory_id, order_Date 

Inventory: Inventory_id, product_ID 

Product: product_id, product_name 

from below query i can find what customer_id=1 has bought 


SELECT p.Product_ID, p.Product_NAME 
FROM CUSTOMER C JOIN Order O ON c.customer_id=o.customer_id 
JOIN INVENTORY I ON o.inventory_id=i.inventory_id 
JOIN product p ON i.product_id=p.product_id 
WHERE C.CUSTOMER_ID='1'; 
+0

什麼是'i.product_id_id'? –

+0

這是錯字,它只是i.product_id –

回答

2
SELECT p.Product_ID, p.Product_NAME 
FROM product p 
JOIN INVENTORY i ON p.product_id = i.product_id 
LEFT JOIN Order o 
     ON o.inventory_id = i.inventory_id 
     AND o.customer_id = '1' 
WHERE o.customer_id IS NULL 
+0

這一個是正確的,但我如何從清單而不是從產品表中獲得清單。 (如果沒有庫存,我不需要顯示它) –

0

下面的查詢人給所需的結果。正確的外連接和空檢查對你來說是個訣竅。

SELECT p.Product_ID, p.Product_NAME 
FROM CUSTOMER C JOIN Order O ON c.customer_id=o.customer_id 
JOIN INVENTORY I ON o.inventory_id=i.inventory_id 
RIGHT OUTER JOIN product p ON i.product_id_id=p.product_id 
WHERE C.CUSTOMER_ID='1' and i.product_id is null; 
+0

這將只會選擇'C.CUSTOMER_ID ='1''的行。我不認爲它會起作用。 –

+0

雅實際上這不起作用,因爲這得到的產品清單不在庫存中,而是從產品中得到。我想要的是產品清單,在庫存和客戶沒有訂購。 –

相關問題