hai fatto una query un pò inutile che complica, secondo me, il "motore" mysql.

non ti bastava fare così?

codice:
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
e poi

codice:
SELECT id, nome FROM Categorie
mi sembra di capire che lavoravi con access giusto?

come query questa è mooolto semplice, non dovresti avere problemi.