если, как вы говорите, есть только два уровня категорий, тогда простой запрос соединения / псевдонима будет работать просто отлично.Если бы вы разрешали произвольную глубину, то вам пришлось бы использовать причудливые рекурсивные запросы или наборы смежности и еще много чего.
Если предположить, что вы разрешаете прикреплять элементы только к «более низкой» категории, то что-то вродеполучите нужные вам результаты:
SELECT top.categoryID, top.categoryName, bottom.categoryID, bottom.categoryName,
COUNT (items.itemID)
FROM categories AS top
LEFT JOIN categories AS bottom ON top.categoryID = bottom.parentCategoryID
LEFT JOIN items ON bottom.categoryID = items.categoryID
WHERE (bottom.categoryID = $your_category)
GROUP BY top.categoryID, bottom.categoryID
Если вам нужно взглянуть только на категории верхнего уровня, измените предложение WHERE
соответствующим образом.