Mysql
 sql >> Database >  >> RDS >> Mysql

Modello di set nidificato, conta gli articoli nelle categorie

Mi sembra un compito per LEFT OUTER JOIN, in questo modo:

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

In tal modo, ti assicuri che tutte le categorie vengano visualizzate. Nota che non sono sicuro al 100%.

EDIT:aggiunta la selezione secondaria per la profondità, provalo.

EDIT:virgola rimossa