si quasi capito.

con la prima query chiedi le macro categorie, poi con il ciclo query nuovamente per ogni macrocategoria in cerca della piu recente.

quelle che non capisco è notizie.

ID CATEGORIA TITOLO ORDINE
1 2 (spettacoli) BLA BLA 01
1 3 (eventi) BLA BLA 00
1 2 (spettacoli) BLA BLA 01

il 2,3,2 si rideriscono a idPadre ovvero alla categoria, ma l'id? ripeti l'id macrocategoria? e perchè se so gia in relazione? il problema è che dovresti quindi mettere nella query o un join eliminando cmq id macrocat da notizie, o se vuoi mantenerlo aggiungi un AND id = idmacrocategoria (1 notizie)