Database 多对多关系分组

Database 多对多关系分组,database,db2,Database,Db2,我有一个包含PRODUCT1和PRODUCT2列表的表。 我想做的是捆绑或分组表中的所有PRODUCT1和PRODUCT2,它们与表中的PRODUCT1或PRODUCT2有关系/匹配,反之亦然 输入: PRODUCT1 PRODUCT2 00000AE503 00000Y2766 00000AE503 00000FG959 00000AE503 00000AE644 00000Y2766 00000AE503 00000Y2766 00000AE644 00000Y2766 0

我有一个包含PRODUCT1和PRODUCT2列表的表。 我想做的是捆绑或分组表中的所有PRODUCT1和PRODUCT2,它们与表中的PRODUCT1或PRODUCT2有关系/匹配,反之亦然

输入:

PRODUCT1    PRODUCT2
00000AE503  00000Y2766
00000AE503  00000FG959
00000AE503  00000AE644
00000Y2766  00000AE503
00000Y2766  00000AE644
00000Y2766  00000FG959
00000FG959  00000Y2766
00000FG959  00000AE503
00000FG959  00000AE644
00000AE644  00000Y2766
00000AE644  00000FG959
00000AE644  00000AE503

00000AG744  00090Y3534
00000AG744  00090Y3533
00090Y3534  00000AG744
00090Y3534  00090Y3533
00090Y3533  00090Y3534
00090Y3533  00000AG744
PRODUCT1    PRODUCT2    GROUP
00000AE503  00000Y2766  1
00000AE503  00000FG959  1
00000AE503  00000AE644  1
00000Y2766  00000AE503  1
00000Y2766  00000AE644  1
00000Y2766  00000FG959  1
00000FG959  00000Y2766  1
00000FG959  00000AE503  1
00000FG959  00000AE644  1
00000AE644  00000Y2766  1
00000AE644  00000FG959  1
00000AE644  00000AE503  1

00000AG744  00090Y3534  2
00000AG744  00090Y3533  2
00090Y3534  00000AG744  2
00090Y3534  00090Y3533  2
00090Y3533  00090Y3534  2
00090Y3533  00000AG744  2
输出:

PRODUCT1    PRODUCT2
00000AE503  00000Y2766
00000AE503  00000FG959
00000AE503  00000AE644
00000Y2766  00000AE503
00000Y2766  00000AE644
00000Y2766  00000FG959
00000FG959  00000Y2766
00000FG959  00000AE503
00000FG959  00000AE644
00000AE644  00000Y2766
00000AE644  00000FG959
00000AE644  00000AE503

00000AG744  00090Y3534
00000AG744  00090Y3533
00090Y3534  00000AG744
00090Y3534  00090Y3533
00090Y3533  00090Y3534
00090Y3533  00000AG744
PRODUCT1    PRODUCT2    GROUP
00000AE503  00000Y2766  1
00000AE503  00000FG959  1
00000AE503  00000AE644  1
00000Y2766  00000AE503  1
00000Y2766  00000AE644  1
00000Y2766  00000FG959  1
00000FG959  00000Y2766  1
00000FG959  00000AE503  1
00000FG959  00000AE644  1
00000AE644  00000Y2766  1
00000AE644  00000FG959  1
00000AE644  00000AE503  1

00000AG744  00090Y3534  2
00000AG744  00090Y3533  2
00090Y3534  00000AG744  2
00090Y3534  00090Y3533  2
00090Y3533  00090Y3534  2
00090Y3533  00000AG744  2

简化问题

如果我们查看以上三条记录,第一条记录到达时,我们可以直接将组分配为1,对于第二条记录,我们需要与第一条记录检查,如果任何产品或产品1匹配,则我们需要将其停在同一组中。。否则我们需要创建不同的组..例如

record2.PRODUCT1=record1.PRODUCT1 or record2.PRODUCT1=record1.PRODUCT2
record2.PRODUCT2=record1.PRODUCT1 or record2.PRODUCT2=record1.PRODUCT1 

请简化您的示例。或者至少详细说明此输出是如何产生的(逻辑上)。您可以使用递归查询相当轻松地创建一个组(查看有关父子关系的许多问题以了解其含义),但识别所有组是一个棘手的问题,因为没有办法提前知道两个群体不会重叠。在SQL中,这是一个非常有趣的问题。@dan1111-在本例中,它是循环的。迈克-如果你把所有东西都放在同一个方向上(去掉循环),这会容易得多。丹,你能提供一些示例代码让大家看看吗