Możesz napisać coś takiego
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
Ale jeśli masz naprawdę duże tabele, zapomnij o trzeciej formie normalnej i dodaj nazwy kategorii do tabeli produktów. Ale tylko jeśli masz naprawdę duże stoły z kategoriami.
UPD Dodaj ORDER BY