0
背景:我有3個MSSQLServer表:product,category,product_category_mapping。產品上方最多有5個級別的類別,這些數據保存在映射表中。 我想要做的是迭代產品和每個產品類別級別,並針對當前級別爲該產品創建一個新的映射。通過幾個層次的父級/子級別的SQL迭代
我從這個查詢開始,並認爲我可以通過在每個類別階段放置遊標來開發它,在那裏執行插入操作。一旦我開始發現很難找到我的頭,現在我想知道這是否是最好的方式 - 有人能告訴我一個更好的方法嗎?
SELECT DISTINCT p.ProductId,p.name
FROM Nop_Product p
INNER JOIN Nop_Product_Category_Mapping cm ON p.ProductId = cm.ProductID
INNER JOIN Nop_Category c ON cm.CategoryID = c.CategoryID
WHERE c.CategoryID in (
--next level
SELECT DISTINCT Nop_Category.CategoryID
FROM Nop_Product_Category_Mapping
INNER JOIN Nop_Category ON Nop_Product_Category_Mapping.CategoryID = Nop_Category.CategoryID
WHERE Nop_Category.ParentCategoryID in (
-- next level
SELECT DISTINCT Nop_Category.CategoryID
FROM Nop_Product_Category_Mapping
INNER JOIN Nop_Category ON Nop_Product_Category_Mapping.CategoryID = Nop_Category.CategoryID
WHERE Nop_Category.ParentCategoryID in (
-- next level
SELECT DISTINCT Nop_Category.CategoryID
FROM Nop_Product_Category_Mapping
INNER JOIN Nop_Category ON Nop_Product_Category_Mapping.CategoryID = Nop_Category.CategoryID
WHERE Nop_Category.ParentCategoryID in (
-- next level
SELECT DISTINCT Nop_Category.CategoryID
FROM Nop_Product_Category_Mapping
INNER JOIN Nop_Category ON Nop_Product_Category_Mapping.CategoryID = Nop_Category.CategoryID
WHERE Nop_Category.ParentCategoryID in (
--top level categories
SELECT Nop_Category.CategoryID
FROM Nop_Product_Category_Mapping
INNER JOIN Nop_Category ON Nop_Product_Category_Mapping.CategoryID = Nop_Category.CategoryID
WHERE Nop_Category.ParentCategoryID = 0)))))
什麼RDBMS?的MSSQLServer? – 2011-01-27 17:07:42
你使用什麼數據庫? – 2011-01-27 17:07:55