场景 - 我们有包装物品,它被定义为一个或多个物品的组合。一个复杂的包是一个包含多个组件项目的包。复杂包装项目的每个组件项目都应链接到相同数量的位置。
例如: 包P1
有组件C1
、C2
和C3
。每个项目C1
,C2
和C3
范围为 10 个位置 1,2....10,这样C1-1
, C1-2
,..., C1-10
, C2-1
, C2-2
,..., C2-10
, 和C3-1
, C3-2
,...,C3-10
存在。在这种情况下,包装物品P1
也与位置 1 到 10 相关联,如P1-1
、P1-2
、...、P1-10
。
该表PACK_BREAKOUT
包含 Pack 组件映射,并且该表ITEM_LOCATION
包含与位置关联的项目。Pack 和 Component 都被视为“项目”,并将存在于ITEM_LOCATION
.
理想情况下,对于像上面这样的场景,下面的记录集是有效的
PACK_NO ITEM NO_OF_LOC
-------- ------ -------------
P1 C1 10
P1 C2 10
P1 C3 10
我有下面的查询,它返回所有此类包装项目的上述结果。
select c.pack_no,c.item,count(a.loc )
from item_location a, pack_breakout c
where c.item=a.item
group by c.pack_no,c.item
order by 1,2;
但是,有一些不一致的结果,例如包装号。P2、P4 和 P5 下面的组件不与相同数量的位置相关联。
PACK_NO ITEM NO_OF_LOC
-------- ------ -------------
P1 C1 10
P1 C2 10
P1 C3 10
P2 C1 11
P2 C2 5
P2 C3 9
P2 C4 11
P3 C1 21
P3 C2 21
P3 C3 21
P3 C4 21
P3 C5 21
P4 C1 10
P4 C2 15
P5 C1 10
P5 C2 9
P5 C3 10
P5 C4 10
请注意,一个包可以有 n 个组件(如您所见P1, P2, P3, P4, and P5
具有不同数量的组件)。
我只想获取组件位置不一致的包。因此,所需的结果集将是-
PACK_NO ITEM NO_OF_LOC
-------- ------ -------------
P2 C1 11
P2 C2 5
P2 C3 9
P2 C4 11
P4 C1 10
P4 C2 15
P5 C1 10
P5 C2 9
P5 C3 10
P5 C4 10
请注意,即使一个组件不匹配 no。作为包中的其他组件的位置,必须将整个包视为不一致(如P5
)。