我有一个表格,其中数据以sku的形式存储。该表用于存储具有类似sku的sku。例如。我有一个不同类型的戒指。因此,该表存储了生产中出现的类似环的组合。
现在,我有一个问题,即sku将成为父母或 sku 对孩子的需要。
任何帮助都会很明显。
答案 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。