SUM counts from parent and child
SELECT name, COUNT(item_id) 
FROM ( SELECT c.name, i.item_id
       FROM categories c
       LEFT JOIN item_category ic ON ic.category_id = c.category_id
       LEFT JOIN items i ON ic.item_id = i.item_id

     UNION ALL

       SELECT c.name, i.item_id
       FROM categories c
       LEFT JOIN subcategories sc ON sc.category_id = c.category_id
       LEFT JOIN item_subcategory isc ON isc.subcategory_id = sc.subcategory_id
       LEFT JOIN items i ON isc.item_id = i.item_id
     ) total
GROUP BY name /* WITH ROLLUP */
;


or 

SELECT name, SUM(cnt)
FROM ( SELECT c.name, COUNT(i.item_id) cnt
       FROM categories c
       LEFT JOIN item_category ic ON ic.category_id = c.category_id
       LEFT JOIN items i ON ic.item_id = i.item_id
       GROUP BY c.name

     UNION ALL

       SELECT c.name, COUNT(i.item_id)
       FROM categories c
       LEFT JOIN subcategories sc ON sc.category_id = c.category_id
       LEFT JOIN item_subcategory isc ON isc.subcategory_id = sc.subcategory_id
       LEFT JOIN items i ON isc.item_id = i.item_id
       GROUP BY c.name
     ) total
GROUP BY name /* WITH ROLLUP */
;