Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verschachteltes Set-Modell, Elemente in Kategorien zählen

Klingt für mich nach einer Aufgabe für LEFT OUTER JOIN, etwa so:

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

Damit stellen Sie sicher, dass alle Kategorien angezeigt werden. Beachten Sie, dass ich mir nicht 100 % sicher bin.

BEARBEITEN:Unterauswahl für Tiefe hinzugefügt, probieren Sie es aus.

EDIT:Komma entfernt