Be certo, avevo trascurato il ciclo for, chiaramente il DISTINCT fa si che i risultati siano unici per QUEL GIORNO, ma poi cicli quindi si ripetono. Allora fai un controllo all'interno del ciclo, metti in un array gli id che sono già saltati fuori e prima di scrivere un nome controlla che il suo id non sia già dentro a questo array