Piu'che un programmatore sei un contorsionista.

conti i record per fare un ciclo for. WHILE fa tutto da solo ed e' piu' performante.... perche' vuoi numerare l'array numerico? si numera da solo.

ma forse alla fine il tuo problema e' dato dalla query iniziale che ti rende un prodotto cartesiano e quindi poi tu ti inventi un modo per eliminare i record doppi.

Parti da un'altra considerazione. Quanti record estrai? quanti ne contiene il database? Perche' ci sono record doppi?

comincia a rispondere a queste domande.