2011-10-15 104 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

雅实际上这不起作用,因为这得到的产品清单不在库存中,而是从产品中得到。我想要的是产品清单,在库存和客户没有订购。 –

相关问题