Yukarıda verdiğin tablolarda ortak bir id alışverişi bulunmadıgından join kullanmaya gerek yok bence. Ama kategoriler ayrı bir tabloda ise ve başlıklarda ayrı bir tabloda ise ve bu tablolar arasında id alışverişi varsa join kullanmak daha mantıklı ve daha hızlıdır.
Aynı sorunla bende karşılaştım gerçekten uğraştırıyor ve kafa şişiyor. Diziler ile aranız iyise bu tür konuları çok rahat bir şekilde çözebilirsiniz.
Şu konuyuda bir inceleyin işinizi görecek kodlar var.
https://www.r10.net/php/442691-group_...listeleme.html