シナリオ - 1 つ以上のアイテムの複合体として定義されるパック アイテムがあります。複合パックは、複数のコンポーネント アイテムを含むパックです。コンプレックス パック アイテムの各コンポーネント アイテムは、同じ数のロケーションにリンクする必要があります。
例: パックP1
には、コンポーネントC1
、、C2
および がありC3
ます。各項目C1
、C2
およびは、 、 、 ...、、、...、、および、... が存在するように、C3
1,2....10 の 10 の場所に範囲が設定されています。このような場合、パック アイテムは、、、、、、のように1 ~ 10 の場所にも関連付けられます。C1-1
C1-2
C1-10
C2-1
C2-2
C2-10
C3-1
C3-2
C3-10
P1
P1-1
P1-2
P1-10
表PACK_BREAKOUT
には梱包コンポーネントのマッピングが含まれており、表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
1 つのコンポーネントが一致しない場合でも注意してください。パック内の他のコンポーネントとしての場所の、パック全体が矛盾していると見なされる必要があります (のようにP5
)。