Il distinct ed il group by ti rendono il primo record che soddisfa l'unicita' della richiesta che sara' il primo record che trova nello scorrere la tabella. se vuoi un record specifico devi sfruttare HAVING sempre che ci siano dei campi che lo permettano.

Altrimenti se devi recuperare l'id piu' alto fai una tabella temporanea ordinata su id DESC ed esegui la selezione su quella. Comunque sia personalmente non approvo l'uso dello sprintf per costruire una variabile query. Assolutamente superfluo.

Un esempio con la tab temporanea:
codice:
CREATE TEMPORARY TABLE tab_tmp
SELECT * FROM scarico
ORDER BY id DESC;

SELECT * FROM tab_tmp
group by prodotto;
In pratica riordini la tabella secondo il tuo bisogno e poi ci fai la query di selezione.

Se la provi con phpmyadmin le due query devono essere eseguite con lo stesso comando, cioe' appiccichi le query una dietro l'altra contemporaneamente. Se da php devono essere due sempre una a seguire subito l'altra.