【发布时间】:2009-11-19 18:48:26
【问题描述】:
我有一个树状结构的类别,树中的叶节点有产品,产品有 Cods 我需要选择所有具有与某些条件匹配的叶子 (Cods) 的顶级类别 (parent=null)...
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
我的查询看起来像这样,但它不是一个解决方案,因为它非常非常慢......有人可以给我一个关于如何做到这一点的建议吗?
【问题讨论】:
-
愚蠢的问题......“鳕鱼”是什么意思?
-
查看我的问题的已接受答案stackoverflow.com/questions/1757370/…
-
数据库是关于 Cods 的 MSSQL 2005 ...产品更像是具有多种变化的产品类型(如颜色大小等),代码是带有序列号/产品的实际产品代码
标签: sql sql-server-2005 tree join