我有一个问题,我想通过SQL查询解决.这将被用作PoC(概念证明).
问题:
产品产品由一个或多个产品实例组成,产品实例可以属于许多产品.这可以在表格中实现:
PO | PI ----- A | 10 A | 11 A | 12 B | 10 B | 11 C | 13
现在我想从一组产品实例中获取产品报价.例如,如果我们发送10,11,13,则预期结果返回B&C,如果我们仅发送10,则结果应为NULL,因为没有产品提供仅由10.发送10,11,12会导致A(不是A&B,因为12不是自己的有效产品报价).
先决条件:发送的产品实例组合只能产生一个特定的产品组合,因此每个查询只有一个解决方案.
好的,我想我有.这符合您提供的限制.可能有一种方法可以进一步简化这一点,但它让我的大脑吃了一点:
select distinct PO from POPI x where PO not in ( select PO from POPI where PI not in (10,11,12) ) and PI not in ( select PI from POPI where PO != x.PO and PO not in ( select PO from POPI where PI not in (10,11,12) ) );
这只会产生填充给定集合的结果,这些结果与所有其他结果不相交,我认为这就是你所要求的.对于给出的测试示例:
提供10,11,12得到A
提供10,11,13得到B,C