Validação e tratamento de username duplicado

27/01/2021

4

Prezados, boa noite!

Tenho que gerar um username automaticamente de uma tabela de alunos pegando o 1 e o ultimo nome do aluno e colocando um ponto no meio. Até ai tudo bem. Fiz o SQL abaixo:

SELECT
matriculas.codigoaluno as 'SIS ID',
SUBSTRING_INDEX(nm_sem_acento, ' ', 1) as 'First Name',
SUBSTRING_INDEX(nm_sem_acento, ' ', -1) as 'Last Name',
lower (CONCAT(SUBSTRING_INDEX(nm_sem_acento, ' ', 1),'.',SUBSTRING_INDEX(nm_sem_acento, ' ', -1))) as 'Username'
FROM pessoas
INNER JOIN matriculas ON matriculas.codigoaluno = pessoas.cd_pessoa
Where
unimestre.matriculas.curso ='30'
order by nm_sem_acento asc);

Acontece que ao gerar o os dados alguns usernames foram duplicados como o exemplo: JOAO PAULO DA SILVA que gerou o user name segundo o script acima como "JOAO.SILVA", mas existe outro aluno com o nome de JOAO PEDRO ANDRADE DA SILVA na mesma tabela que pela lógica do sql tambem gerou o username "JOAO.SILVA"e então tenho duplicidade no username.

Minha dúvida é como incluir no script algo que identifique que as linhas:

SUBSTRING_INDEX(nm_sem_acento, ' ', 1) as 'First Name',
SUBSTRING_INDEX(nm_sem_acento, ' ', -1) as 'Last Name',
lower (CONCAT(SUBSTRING_INDEX(nm_sem_acento, ' ', 1),'.',SUBSTRING_INDEX(nm_sem_acento, ' ', -1))) as 'Username'

vão gerar 2 usernames iguais e que no segundo incluímos o texto: "_1" para diferenciar o 2 igual. Dessa forma teríamos o JOAO.SILVA e o JOAO.SILVA_1 o que nao teria problema.

Alguém pode me ajudar a fazer esse tratamento nessa query?

Grato!

Att

Paulo Muller
eng.pamf@gmail.com
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar