Можно сделать запросом вроде:
SELECT categories.*, (
SELECT COUNT(id)
FROM products
WHERE products.category_id = categories.id
) AS products_count
FROM categories;
Но лучше в таблицу каталогов добавить колонку количества материалов, в таблице материалов добавить триггер на INSERT/DELETE, который бы увеличивал/уменьшал счетчик количества материалов в таблице каталогов.