ancora, spero di non essermi incasinato con i nomi dei campi
attenzione ad offerte.*, scritta in questo modo ti estrae tutte le combinazioni differenticodice:SELECT DISTINCT offerte.*, user.citta FROM offerte, user WHERE citta in ( SELECT id FROM comuni WHERE id_provincia in ( SELECT id FROM province WHERE provincia='$provincia' ) ) AND offerte.iduser=user.id AND offerte.attiva=1 ORDER BY DATA ASC
estrae in ogni caso solo in presenza sia di user che di offerte (dovrebbe essere logico ma bene precisarlo)
prova a vedere se ti "garba", fai sapere