2012-05-07 91 views
1

我們
我有一個類別表與CategoryID(主鍵),ParentID(int非空)和類別(nvarchar非空)。
我正嘗試在此表中插入和檢索具有ID ParentID的ID CategoryID和SubCategories的類別。
我一直在嘗試整個週末沒有運氣,並希望你能幫助我。 I'm使用MSSQL 2008年
表結構應該是這樣的:與類別和子類別的嵌套類別表

-Category1   
     SubCategory1 
     SubCategory2 
    ... 

-Category2 
      SubCategory2 
      SubCategory2 
    ... 

任何幫助將是非常讚賞

+1

你試過了什麼代碼? –

+0

從你的意見看來,在我看來,問題更多的是在UI控制端(例如GridView),如何更新GridView行插入數據,而不是在數據庫端。如果是這樣的話,我想你應該澄清一下,在你的問題中,如果它是一個技術特定的問題(例如WPF,ASP .NET,Windows Forms等)。順便說一下,你有沒有看到[RowCommand Event](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx)的例子? –

+0

謝謝阿道夫。我研究過關於rowcommand的事件,並認爲它可以提供幫助。我會試試看。 – Totem

回答

0
+0

謝謝,但文章並沒有給我我需要的東西。該場景是一個簡單的數據庫插入(工作正常),然後顯示類別的結果(工作正常)。現在如何選擇一個Category(CategoryID)並在下面插入一個SubCategory(帶有ID ParentID)。我使用Gridview來顯示結果。 – Totem

+0

感謝Martin,我想我找到了我在這裏尋找的東西:http://sqllessons.com/categories.html – Totem

0

您可以使用遞歸公用表表達式:

WITH cteTable(madeUpColA, madeUpColB, Etc) as 
(
    -- this select statement with the union all is what does the recursive query 
    SELECT aCol as madeUpColA, bCol as madeUpColB, Etc 
    from dbo.someTable 
    UNION ALL 
    SELECT aCol as madeUpColA, bCol as madeUpColB, Etc 
    FROM dbo.someTable st 
    INNER JOIN cteTable as c -- inner join on relationship 
    ON st.aCol = c.madeUpColA 
) 
-- this select statement is what retrieves the data from the above query 
SELECT madeUpColA, madeUpColB, Etc 
FROM cteTable 
-- add your other criteria here 

可以使用MSDN documentationWITH聲明專門查詢

+0

感謝您的回覆。但我不認爲它應該是那麼複雜。我希望我知道一種方法來從gridview或datalist中選擇插入的類別,並根據該類別的ID在Categories表格中插入一個子類別。我確信神奇應該發生在gridview的rowcommand,但我不知道如何去捕捉它:( – Totem

+0

謝謝查爾斯,我想我找到了我在這裏找的:http://sqllessons.com /categories.html – Totem

+0

我發佈的with語句可以防止您不必擔心子類別的深度。例如,您發佈的頁面使用3個連接語句來獲取4個子類別的深度。如果深度爲1或很多,它仍然會返回所有結果 –

0

你只是在尋找一個簡單的自我加入?如果是這樣,這應該工作:

select parent.category, subcat.category as subcategory 
from Category subcat join 
    Category parent 
    on subscat.parentid = parent.categoryid 

或者你是否需要遍歷整個家長鏈?如果是這樣,那麼遞歸CTE是更好的方法。

+0

對不起用於反饋晚。我不明白你的問題,但是它應該是一個簡單的聯合。它只關於表tblCategory:CategoryID [int]主鍵,ParentID [int] NOT NULL,Category [nvarchar](255)NOT NULL。 – Totem

+0

謝謝戈登,我想我找到了我在這裏尋找的東西:http://sqllessons.com/categories.html – Totem