J'ai un arbre comme la structure des catégories, les feuilles des nœuds dans l'arbre ont des produits et les produits ont morues je dois sélectionner toutes les catégories de niveau supérieur (parent = null) qui ont leafs (morues) qui correspondent à certains critaria ...arbre de requête SQL comme la 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
ma requête ressemble à ceci, mais ce n'est pas une solution car il est très très lent ... quelqu'un peut-il me donner une suggestion sur la façon de le faire?
Question muette ... que voulez-vous dire par "morues"? –
Quelle base de données utilisez-vous? –
La base de données est MSSQL 2005 sur les morues ... les produits ressemblent plutôt aux types de produits qui ont beaucoup de variations (comme la taille des couleurs etc.) et le code est le produit réel celui avec un numéro de série – bogdanbrudiu