У меня есть дерево, как структура категорий, листовые узлы в дереве имеют продукты и продукты имеют кодеки Мне нужно выбрать все категории верхнего уровня (parent = null), которые имеют листья (Cods), которые соответствуют некоторые critaria ...sql query tree like structure
SELECT
Category.Id AS Id0_,
Category.Name AS Name0_,
Category.COrder AS COrder0_,
Category.Description AS Descript4_0_,
Category.ParentId AS ParentId0_,
Category.Description_En AS Descript6_0_,
Category.Name_En AS Name_En0_,
Category.ImagePath AS ImagePath0_
FROM
Category
LEFT JOIN Category AS c1 ON Category.Id=c1.ParentId
LEFT JOIN Category AS c2 ON c1.Id=c2.ParentId
LEFT JOIN Category AS c3 ON c2.Id=c3.ParentId
LEFT JOIN Category AS c4 ON c3.Id=c4.ParentId
LEFT JOIN Product ON
c4.Id=Product.Category
OR c3.Id=Product.Category
OR c2.Id=Product.Category
OR c1.Id=Product.Category
OR Category.Id=Product.Category
INNER JOIN Cod ON Cod.Product=Product.Id
WHERE
Category.ParentId is null
AND Cod.Hidden!='1'
AND
(
cod.Stock>0
OR (cod.CodBare='0' AND Product.ProdType=8))
AND Cod.Price>0
)
ORDER BY Category.COrder
мой запрос выглядит так, но это не решение, потому что это очень-очень медленно ... Может кто-нибудь дать мне предложение о том, как это сделать?
Тупой вопрос ... что вы подразумеваете под «Cods»? –
Какую базу данных вы используете? –
База данных - это MSSQL 2005 о Cods ... продукты больше похожи на типы продуктов, которые имеют множество вариаций (например, размер цвета и т. Д.), А код - это фактический продукт с серийным номером/кодом продукта – bogdanbrudiu