Le code SQL suivant fonctionne correctement, mais je ne peux pas sélectionner/filtrer la catégorie. Apporte toutes les catégories.Filtrer par sous-noeud avec le nombre de produits
À titre d'exemple,
Cars (20) (root)
---> Blue cars (12)
----------> Ford (2)
----------> Bmw (9)
----------> Dodge (1)
---> Red cars (9)
----------> Xxxx (9)
---> Black cars (1)
----------> Yy (1)
Comment puis-je sélectionner uniquement la catégorie de la voiture bleue. (avec sous-noeuds)
Comment est-ce que je peux changer le code de SQL pour ceci peut être fait?
Je souhaite que le résultat soit le suivant. (Si je choisis la catégorie de voiture bleue)
---> blue cars (12)
----------> ford (2)
----------> bmw (9)
----------> dodge (1)
Ce code sql ...
SELECT
parent.cid,
parent.title,
(SELECT COUNT(parent2.cid) FROM categories AS parent2 WHERE parent.lft > parent2.lft AND parent.rgt < parent2.rgt) AS depth,
COUNT(products.cat_id) AS total
FROM categories AS node,
categories AS parent,
products
WHERE
node.lft BETWEEN parent.lft AND parent.rgt
AND node.cid = products.cat_id
GROUP BY parent.cid having depth <= 5
ORDER BY parent.lft
Comment stockez-vous votre heirachy? - voir cette question pour vos options http://stackoverflow.com/questions/4048151/what-are-the-options-for-storing-hierarchical-data-in-a-relational-database –
Modèle de jeu imbriqué –
Je pense que tout vous devez faire est d'ajouter 'AND node.cid =' (quel que soit le cid est l'ID pour les voitures bleues) – cha