类别层次结构

4
我有一个分类表,只有两个字段 - 即idcategoryname - 以及一个category_parent表,其中包含categoryidparentid字段。这两个字段都是categoryid的外键。

因此,对于一个类别,我可以有多个父级或多个子级。

我的问题是:如何找到特定类别的所有父级或所有子级?

通过“所有父级”,我指的是直接父级以及直接父级的父级等等。 我需要将父级的ID存储在数组或列表中。

我希望用C#代码解决这个问题。


1
你使用哪种SQL版本?MySQL,SQL Server等等... - Justin Swartsel
你需要一个简单的SELECT语句,还是函数或存储过程更适合你的需求? - dani herrera
1
为什么你有一个 category_parent 表?一个分类可以有多个父级吗?如果不行,那似乎是不必要的。 - Waleed Khan
@Justin 嗯,实际上我正在使用Mysql,但我需要将所有这些父项以数组或List<int>的形式放入我的C#代码中。 - user1542652
@arxanas 是的,一个类别可以有多个父级或多个子级,就像我在问题中提到的那样。 - user1542652
2个回答

1

不需要category_parent。你可以在一个表格中处理所有关于类别和父级的事情。

SELECT CatgoryId,CategoryName FROM Category WHERE ParentId is null >>> 这是用于主要类别

SELECT CategoryId, CategoryName FROM Category WHERE ParentId=2 >>> 用于特定类别

  CREATE TABLE [dbo].[Category](
[CategoryId] [int] IDENTITY(1,1) NOT NULL,
[CategoryName] [nvarchar](50) NOT NULL,
[ParentId] [int]  FOREIGN KEY REFERENCES [dbo].[Category] ([CategoryId]))

你的表格如何实现一个类别有多个父级或多个子级? - user1542652
当您向表中插入数据时,如下所示:-------------CategoryId - CategoryName - ParentId (表头) ---- 1 - PC - null 2 - 手机 - null 3 - 诺基亚 - 2 (ParentId=2 (手机)) 4 - Nokia5110 - 3 (ParentId=3 (诺基亚)) 5 - 卡斯伯 - 1 (ParentId=1 PC) - Dereli

0

实际上,我需要的是一个C#代码,以便我可以将一个类别的所有父项列在数组或List<int>中。 - user1542652

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接