我有一个问题,希望通过 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)
)
);
这只会产生填充给定集合的结果,这些结果与所有其他结果不相交,我 思是你所要求的。对于给出的测试示例:
关于sql - 递归sql问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/378040/