sql - 如何从另一个表中排除缺少变体的产品?
问题描述
这是我需要进行的 SQL 查询,其中我有一个父产品。在每个产品下,可以嵌套多个变体(再次是产品)。某些变体可能不会发布到 Channel,我需要排除所有至少有 1 个孩子未包含在 ChannelReport 中的父母。
WHERE 1=1
AND bvc_Product.ClientID=100
AND bvc_Product.Status=1
AND VariationProduct.ProductID is not null
AND VariationProduct.ChildProductID IN (SELECT productid FROM
ChannelReport wpal WHERE wpal.productid =
VariationProduct.ChildProductID)
样本数据为:
T 恤 1 - 产品 ID S、M、L - 3 种不同的变体。从技术上讲,每个产品ID 也是如此。
T 恤 2 - 产品 ID S、M、L - 3 种不同的变体。
T-Shirt1-M 不在 ChannelReport 上作为 productID。所有 T-Shirt2 变体都在 ChannelReport 中。在这种情况下,结果应该只有:
T恤2
解决方案
即使没有看到你的桌子,我也可以告诉你。任何时候你有这样的要求:
所有至少有 1 y的x
您需要使用 EXISTS()。满足您要求的伪代码:
WHERE NOT EXISTS(SELECT child FROM Table WHERE ChannelId NOT IN (SELECT Channelid FROM ChannelTable))
推荐阅读
- javascript - 猫鼬居住
- python - 我在 Python 中收到 Foursquare API 的关键错误消息
- c++ - 在不使用成员函数和友元函数的情况下实现运算符重载
- vba - 尝试访问远程项目中表单模块的代码行
- javascript - HTML 表单中的 JSON 数据
- c - C segfault - off-by-one - 大小为 1 的无效写入
- javascript - 如何使用 html / angular / javascript 扩展表格
- php - Ajax Full Featured error 添加新事件
- google-apps-script - 试图追加行我没有掌握什么?
- reactjs - 集成时出现此错误错误:操作必须是普通对象。使用自定义中间件进行异步操作