hai fatto una query un pò inutile che complica, secondo me, il "motore" mysql.
non ti bastava fare così?
e poicodice:select P.id, P.nome, P.descrizione, C.nome AS categoria, P.prezzo, P.immagine from Prodotti as p inner join Categorie as c on P.categoria = C.id where P.offerta = 'true' order by rand() limit 8
mi sembra di capire che lavoravi con accesscodice:SELECT id, nome FROM Categoriegiusto?
come query questa è mooolto semplice, non dovresti avere problemi.