【发布时间】:2017-04-19 23:02:26
【问题描述】:
我有一个如下表结构。这只是直接(A,B,C,D和E)和间接('B1','B2','C1','C2','C3','B21'和' C31')与'X'相关,以解释问题。 实际表加载了更多与这个'X'无关的记录
(例如,桌子上可能有另一个项目“Y”,由“N”、“K”、“A”、“B1”、“B21”和“C31”组成)
表 1
Parent ChildP SubCat Qty
X A 0 2
X B 1 1
X C 1 2
X D 0 1
X E 0 1
B B1 0 1
B B2 1 1
C C1 0 1
C C2 0 1
C C3 1 1
B2 B21 0 1
C3 C31 0 1
Y N 0 1
Y K 1 2
Y A 0 2
Y B1 0 1
Y B21 0 1
Y C31 0 1
K K1 0 0
我将以 Parent 'X' 作为这个问题的例子。
以下排序仅显示Parent = 'X'的位置
Table1 WHERE Parent = 'X'
Parent ChildP SubCat Qty
X A 0 2
X B 1 1
X C 1 2
X D 0 1
X E 0 1
现在在此表中,ChildPs 和 SubCat 为 1 在下面有自己的 childPs。
-
例如:
SELECT * FROM Table1 WHERE Parent = 'B'Parent ChildP SubCat Qty B B1 0 1 B B2 1 1 -
例如:
SELECT * FROM Table1 WHERE Parent = 'C'Parent ChildP SubCat Qty C C1 0 1 C C2 0 1 C C3 1 1
我希望我的结果集如下所示,显示 X 的所有内容,而不仅仅是顶级 ChildPs,
Parent Level FROM ChildP SubCat Qty
X 1 X A 0 2
X 1 X B 1 1
X 1 X C 1 2
X 1 X D 0 1
X 1 X E 0 1
X 2 B B1 0 1
X 2 B B2 1 1
X 2 C C1 1 1
X 2 C C2 0 1
X 2 C C3 0 1
这些 B2 和 C1 将在它们下面有更多的子节点,这些子节点也需要显示,理想情况下最终结果如下所示:
Parent Level FROM ChildP SubCat Qty
X 1 X A 0 2
X 1 X B 1 1
X 1 X C 1 2
X 1 X D 0 1
X 1 X E 0 1
X 2 B B1 0 1
X 2 B B2 1 1
X 2 C C1 1 1
X 2 C C2 0 1
X 2 C C3 0 1
X 3 B2 B2A 0 1
X 3 C1 C1A 0 1
现在这个 B2A 和 C1A 可能在下面有更多的级别,下降到大约 5-6 级。我的问题是,我不知道每个ChildP 最初查看父级(例如:X)的级别
这就像说:显示 Parent 为 X 的所有内容,并有一个 if 子句来说明 SubCat 是否为 '1' 进一步查看直到 SubCat 为 '0'
这可以通过 SQL 查询实现吗?
【问题讨论】:
-
您好,我确实认为这个问题与我想要的很接近,但它查看的结果表与我想要的不同?
-
这可能不是 100% 的答案,但您应该能够采用这种方法并使用它。
-
我希望您不打算将您的列命名为“来自”
-
你如何找到根元素,它只是 parent = X 的元素
标签: sql sql-server