これはSQLServerの質問です
カテゴリのセットがあり、それらの関係はネストされたカテゴリになります。
関係を維持する経路を構築し、SEFURLを構築したいと思います。これが私が探しているものです:
Category table:
ID, Name
1, Root
2, Cat1
3, Cat2
4, Cat1.1
5, Cat1.2
6, Cat2.1
7, Cat2,2
CategoryChild table: ParentCategoryID, ChildCategoryID
1, 2
1, 3
2, 4
2, 5
3, 6
3, 7
これは無制限のネストされた構造です。これが私がしていることです(私はそれが間違っていることを知っていますが、このようなものが欲しいです):
WITH MenuItems
AS (
SELECT
CAST((ItemPath) AS VARCHAR(1000)) AS 'ItemPath',
CategoryID, Category, ChildID
FROM #Mapping
WHERE CategoryID = 1
UNION ALL
SELECT
CAST((items.ItemPath + '-/' + MenuItem.Category) AS VARCHAR(1000)) AS 'ItemPath',
MenuItem.CategoryID, MenuItem.Category, MenuItem.ChildID
FROM #Mapping AS MenuItem
JOIN MenuItems AS items
ON items.ChildID = MenuItem.CategoryID
)
select * from MenuItems
それは私にこのようなものを与えます:
ルート--------|1---|ルート---|2 ルート--------|1---|ルート---|3 ルート/Cat2--- | 3 --- | Cat 2 --- | 6 ルート/Cat2--- | 3 --- | Cat 2 --- | 7 ルート/Cat1--- | 2 --- | Cat1 --- | 4 ルート/Cat1--- | 2 --- | Cat1 --- | 5
したがって、理想的には、パスは次のようになります。
ルート/親/子(など)!