Je zou zoiets kunnen schrijven als
SELECT product.*, bottom_category.name, top_category.name
FROM product
LEFT JOIN bottom_category ON bottom_category.id = product.bottom_category_id
LEFT JOIN top_category ON top_category.id = bottom_category.top_category_id
ORDER BY top_category.id,bottom_category.id
Maar als je echt grote tabellen hebt, vergeet dan gewoon de 3e normale vorm en voeg namen voor categorieën toe aan de producttabel. Maar alleen als je echt grote tabellen met categorieën hebt.
UPD Voeg ORDER BY
toe