prova questa
codice:
select news.testo_news,tab2.id_commento,tab2.id_news,tab2.testo_commento,tab2.data_commento FROM(
select max(id_commento) as commento
from commenti group by id_news
order by data_commento desc
)
as tab1
left join commenti as tab2 on tab1.commento = tab2.id_commento
inner join news on news.id_news = tab2.id_news
union
select news.testo_news,commenti.id_commento,commenti.id_news,commenti.testo_commento,commenti.data_commento from news
left join commenti on news.id_news = commenti.id_news
where commenti.id_news is null