2011-04-06 28 views
0

我想创建一个页面,您可以选择一个类别链接,然后它会显示该类别下的类别,类似于向下的步骤。我想要这样做我的分贝表DB中的多个类别

table [categories] 
pk categoryID 
categoryName 
parentID 
level 

parentID将自己链接回categoryID。有没有任何教程显示我没有发现这个演示。或者有没有更好的办法来解决这个问题。

回答

1

你需要设置你的表了一个递归的单一对多的关系,这样做有关数据类型的一些假设):

CREATE TABLE [Categories] 
(
    CategoryID int NOT NULL PRIMARY KEY, 
    CategoryName varchar(255) NOT NULL, 
    ParentCategoryID int NULL, 
    -- Level field is not needed; can be dynamically determined 

    CONSTRAINT FK_Child_to_Parent 
     FOREIGN KEY (ParentCategoryID) 
      REFERENCES [Categories] (CategoryID)  

) 

为了查询这个表一般情况下,你需要使用一个自连接,像这样(注意从/加盟;这是您将要重复使用的部分):

select child.*, parent.* 
from Categories child 
join Categories parent on child.ParentCategoryID = parent.CategoryID 

由于ParentCategoryID的值为NULL,因此您可以分辨何时查看父级类别。要回答你如何让孩子的类别问题,为您的网页给父母ID,您可以使用此:

select child.CategoryID, child.CategoryName 
from Categories child 
join Categories parent on child.ParentCategoryID = parent.CategoryID 
where parent.ParentCategoryID = [some value] 

有吨教程/设计在那里,如果你谷歌“递归的数据库表”或相关的术语;对于初学者来说,这里是一个(随机选择):http://www.tomjewett.com/dbdesign/dbdesign.php?page=recursive.php

+0

我不知道.net 4.0以及只是学习,但我想要完成的是URL中的多个类别的路由例如。 www.something.com/clothing/mens/somepage.aspx所有这一切的难点在于在管理方面进行管理。我需要有一个带有列表框的插入文本框和它旁边的窗体来更新选定的项目,并使用选定的项目创建另一个子类别的选择框。 – ONYX 2011-04-07 07:17:51