[eluser]tonanbarbarian[/eluser]
I would recommend you just use a single query that joins all of the tables, and then processing the data and splitting it into the structure that you want.
Because for each news item you are doing a seperate query to find the categories, so if you have 200 news items you are doing 201 queries, rather than just 1 if you use a join and process it.