2

我有两个关系简单的表。一张表是销售清单。第二个表是产品列表。关系是在销售表中是一个指向给定产品的产品 ID。

我需要检索从未售出的产品的详细信息。

以下是两个表的链接: 产品表和销售表

如果您不想单击它,表格如下所示:

**SALES**

id
sale_id
product_id
quantity

**PRODUCTS**

id
name
category_id
stock
brand_id
price
color
warranty

到目前为止,我有这个:

SELECT products.id 
FROM products 
LEFT JOIN sale_products ON sale_products.product_id = products.id 
WHERE products.id NOT IN (sale_products.product_id) 
GROUP BY products.id

但这并没有检索到任何东西,尽管如果我取出 NOT,那么我会得到 17 个已售商品的所有 17 个 ID...

所以我想说它要么必须改变,要么用完全不同的方法来完成..

非常感谢和欢迎任何帮助。

4

2 回答 2

1

尝试这个:

 SELECT products.id 
    FROM products 
    LEFT JOIN sale_products ON sale_products.product_id = products.id 
    WHERE sales_products.product_id IS NULL
    GROUP BY products.id

您要求所有产品和每个产品,要么获取销售记录,要么如果未找到销售记录,则为 sales_product 表中的每一列返回 NULL。

于 2013-05-16T13:50:27.143 回答
1
SELECT 
    * 
FROM 
    PRODUCTS P
WHERE 
    P.ID NOT IN (
        SELECT 
            PRODUCT_ID 
        FROM 
            SALES
    )
于 2013-05-16T13:52:35.813 回答