如何从无组织的表创建子父关系?

时间:2013-05-28 11:32:29

标签: sql

我有一个表格,其中数据以sku的形式存储。该表用于存储具有类似sku的sku。例如。我有一个不同类型的戒指。因此,该表存储了生产中出现的类似环的组合。

现在,我有一个问题,即sku将成为父母 sku 对孩子的需要。

任何帮助都会很明显。

3 个答案:

答案 0 :(得分:1)

SELECT parent.Item, child.similarItem 
FROM temp parent 
FULL JOIN temp child 
ON parent.Item = child.similarItem

这将选择所有父子对。 257074将作为父项和子项返回,因此存在于两行中。如果这不是您所期望的结果,请说明您的期望。

编辑:

你的表格有点不清楚(对我来说)

Row 11: ( Item = `257074`, SimilarItem = `228725` )
Row 12: ( Item = `228725`, SimilarItem = `257074` )

根据您说明257074在预期结果的行Isparent = 1中有9的内容?为什么不228725代替(因为他们互相引用)?

我认为你应该首先不要双向引用这种关系

给出的例子:

ID Parent Item
0  NULL   1
1  NULL   2
2  1      3
3  3      4
4  NULL   5
5  3      6

这棵树是哪个:

  1    2    5
  |
  3
  |
+-+-+
4   6

这将导致:

SELECT Item AS SKU,
       CASE WHEN EXISTS ( SELECT ID FROM temp WHERE Parent = table.Item )
           THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END AS IsParent,
       Parent AS ParentSKU
FROM   temp table

SKU IsParent ParentSKU
----------------------
1   1        NULL
2   0        NULL
3   1        1
4   0        3
5   0        NULL
6   0        3

请注意,我提供的表格并未以两种方式引用父子关系,但我仍然可以获得您要求的结果。希望这有帮助,祝你好运!

答案 1 :(得分:0)

SELECT 
    m1.item as 'PARTENT',
    m2.similaritem as 'CHILD'
FROM temp m1 
full join temp m2 on m1.item = m2.similaritem

这将以父子关系的形式输出结果

答案 2 :(得分:0)

您可以通过简单地添加寻址此相同表列的外键来添加父子关系,similarItem-item。