我有两个具有简单关系的表。一张表是销售 list 。第二个表是产品列表。关系是 Sales 表中有一个指向给定产品的 Product ID。
我需要检索从未售出的产品的详细信息。
以下是两个表的链接: Table with Products & Table with Sales
如果您不想单击它,表格如下所示:
**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...
所以我想说它要么必须改变,要么用完全不同的方法来完成..
非常感谢并欢迎任何帮助。
最佳答案
试试这个:
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。
关于SQL 仅选择不包含相关表中使用的 ID 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16589239/