Mysql
 sql >> база данни >  >> RDS >> Mysql

Модел на вложен набор, брой елементи в категории

Звучи ми като задача за LEFT OUTER JOIN, така:

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

По този начин гарантирате, че всички категории са показани. Имайте предвид, че не съм 100% сигурен.

РЕДАКТИРАНЕ:Добавен подизбор за дълбочина, опитайте.

РЕДАКТИРАНЕ:Премахната запетая




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайте sphinx срещу MySQL без заявка за търсене на текст

  2. MySQL потребителски достъп - специфичен за таблицата

  3. Опитвам се да оптимизирам MySQL заявката с LEFT OUTER JOIN

  4. грешка:'Не мога да се свържа с локален MySQL сървър чрез сокет '/var/run/mysqld/mysqld.sock' (2)' -- Липсва /var/run/mysqld/mysqld.sock

  5. iOS – Най-добри практики за синхронизиране на основни данни и сървърни бази данни