2011-04-06 79 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