Mysql
 sql >> Base de données >  >> RDS >> Mysql

Modèle d'ensemble imbriqué, compter les éléments dans les catégories

Cela ressemble à une tâche pour LEFT OUTER JOIN pour moi, comme ceci :

SELECT parent.name, COUNT(product.item_id), 
       (select count(*) from Category parent2 
         where parent.lft > parent2.lft
           and parent.rgt < parent2.rgt) as depth
  FROM Category parent
  LEFT OUTER JOIN Category node 
    ON node.lft BETWEEN parent.lft AND parent.rgt
  LEFT OUTER JOIN Item_Category product
    ON node.category_id = product.category_id
 GROUP BY parent.name
 ORDER by node.lft

Ainsi, vous vous assurez que toutes les catégories sont affichées. Notez que je ne suis pas sûr à 100 %.

EDIT :Ajout d'une sous-sélection pour la profondeur, essayez-le.

EDIT :virgule supprimée