2012-07-21 96 views
4

我有一个只有两个字段的分类表 - 即idcategoryname - 和一个category_parent表,字段为categoryidparentid。两者都是categoryid的外键。类别层次

所以我可以有多个父母或多个孩子的类别。

我的问题是:我怎么能找到所有的父母或一个特定类别的所有儿童? “所有的父母”,我的意思是直系父母,以及直系父母的父母,等等。我需要一个数组或列表中父母的ID。

我更喜欢这个问题的C#代码。

+1

哪您使用的SQL的味道? MySQL,SQL Server等... – 2012-07-21 12:47:32

+0

您是否需要简单的select语句或函数或存储过程是您的解决方案? – danihp 2012-07-21 13:11:01

+1

为什么你有'category_parent'表?一个类别可以有多个父母吗?如果不是,似乎没有必要。 – 2012-07-21 16:34:58

回答

1

没有必要category_parent.you可以做一切有关类别和家长在桌子上。

SELECT CatgoryId,类别名称FROM类别WHERE的ParentId为null >>>这是主要类别

SELECT类别ID,类别名称FROM类别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])) 
+0

如何在表格中拥有多个父母或多个子类别的孩子? – user1542652 2012-07-24 12:34:54

+0

当您将数据插入到表中,这样, -------------类别编号 - 类别名称 - 的ParentId(头)---- 1 - 电脑 - 空 2 - Phone - null 3 - Nokia - 2(ParentId = 2(Phone)) 4 - Nokia5110 - 3(ParentId = 3(Nokia)) 5 - Casper - 1(ParentId = 1 PC) – User86 2012-07-24 19:54:51