è un problema di logica, invece:
prima prendi il numero di record presenti nella tabella col "select count(*)", poi invece selezioni il nome da un'altra tabella
solo che non è detto che i due numeri siano coincidenti, quindi potresti andare oltre il numero di record effettivi selezionati
come ti hanno detto meglio che utilizzi un ciclo for