当前位置:  开发笔记 > 数据库 > 正文

递归sql问题

如何解决《递归sql问题》经验,为你挑选了1个好方法。

我有一个问题,我想通过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不是自己的有效产品报价).

先决条件:发送的产品实例组合只能产生一个特定的产品组合,因此每个查询只有一个解决方案.



1> Adam Bellair..:

好的,我想我有.这符合您提供的限制.可能有一种方法可以进一步简化这一点,但它让我的大脑吃了一点:

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

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有