在访问数据库上使用不存在

时间:2017-12-28 21:42:42

标签: sql ms-access

我是批发商

我有桌子

customers -> customer_id , companyname , contact_name , phone_number , email , adress and city 

products -> product_id , product_name , unit_price 

Sale -> sale_id , Date , customer_info , Serial_Number ** customer info is customer id

Sales_detail -> Sale_detail_id , Product_ID , Quantity , sale_id

这是我的问题:

我需要找到尚未出售给客户的产品

例如:

我有p1 p2 p3 p4 p5和c1 c2 c3

c1买了p1 p2所以我需要一个查询来找到这个:c1 - >> p3 p4 p5

1 个答案:

答案 0 :(得分:0)

这样的事情会起作用:

SELECT c.customer_id, p.product_id
FROM customers c, products p
WHERE NOT EXISTS
(SELECT 1
 FROM sale s
 INNER JOIN sales_detail sd ON s.sale_id = sd.sale_id
 WHERE s.customer_info = c.customer_id
 AND sd.product_id = p.product_id)
 ORDER BY c.customer_id, p.product_id

对于每个客户ID,请选择没有销售的产品ID,以使与销售相关联的客户信息与客户ID匹配,并且与销售相关联的产品与产品ID匹配。