【发布时间】:2014-09-20 00:21:26
【问题描述】:
我正在寻找一些关于如何在 SQL 中构建(以表格方式)无限嵌套组的帮助/想法。
EX.
group1 will contain a,b,c
group2 will contain d,e,f
group3 will contain h,i,j
group4 will contain k.l.m
groupA will contain group1,group2
groupB will contain group3
groupA1 will contain groupA,groupB,group4
每个最低级别的组将引用不同表中的扫描列表(在此示例中,假设 group1 group2 group3 和 group4 是最低级别)
这应该能够支持无限数量的组
我知道这很模糊,但我正在尝试找出如何构建和管理这样的东西......
我正在尝试表和查询。到目前为止,我有这个:
Scan Table
((uniqueID),barcode,user,date,group)
Groups Table
(groupID,groupName,groupRef)
但我在“创建”GroupA 时遇到问题
就查询而言,我需要知道什么是较低级别的组并获取组中所有项目的列表。
【问题讨论】:
-
您能否详细说明使用表格和值,或者一个示例,当您说无限数量的组时,我不确定您在寻找什么...您是说要创建一个表格像这样???你想设计一个查询吗???
-
我认为您将需要某种父/子结构。根据您的小示例,您的表可能有 3 列:
ID、NAME、PARENT_ID。您的顶级对象在父列中不会有空值,您的最低级别永远不会用作父级。 -
嵌套集是做这种事情的另一种方式。你可以用谷歌搜索“sql 嵌套集”,你会发现大量的例子来说明如何做到这一点。这是一种出色的方法,具有超强的性能。如果您使用邻接模块,您最终将需要递归 ctes 来检索您的数据。如果您有大量数据,这可能会变得非常缓慢。
标签: sql-server grouping