Aspetta, perché forse ho interpretato male la domanda.

Dunque, la query che dovrebbe servirti è questa:
codice:
SELECT categories.category_name, categories.category_id, subcategories.subcategory_name AS num
FROM categories
LEFT JOIN subcategories ON categories.category_id = subcategories.subcategory_category
ORDER BY category_id ASC
Però dovresti incollarmi la parte in PHP, perché forse ho capito cosa intendi, e dovresti aver bisogno di una condizione per verificare che la categoria sia diversa da quella precedentemente visualizzata.