Reordenar campo de base dados

Malta tenho uma tabela de socios, e cada socio tem um nrº de socio… Preciso que de vez em quando o utilizador possa ordenar esses numeros, ou seja, tapar os “buracos” feitos quando um sócio é eliminado.

por exemplo

Socio a tem nº 1
Socio b tem nº 2
Socio c tem nº 3
Socio d tem nº 4
Socio e tem nº 5

é eliminado o sócio b e d e tem de ficar assim:

Socio a tem nº 1
Socio c tem nº 2
Socio e tem nº 3

Alguem me pode dar uma dica sobre como fazer?

Amigo, acredito que esteja usando um banco de dados certo?

Se sim, é melhor realizar essa ordenação na instrução sql. Se precisar de ajuda com essa instrução poste, que verifico.

vc nao esta procurando reordenar nada, o que vc quer eh alterar o id/numero do socio, o que eh uma pessima pratica !! em outras palavras esta procurando sarna pra se cocar, se o numero dado ao socio foi X quando foi cadastrado, este deve permanecer o identificador do socio !!

[quote=castroluis]Malta tenho uma tabela de socios, e cada socio tem um nrº de socio… Preciso que de vez em quando o utilizador possa ordenar esses numeros, ou seja, tapar os “buracos” feitos quando um sócio é eliminado.

por exemplo

Socio a tem nº 1
Socio b tem nº 2
Socio c tem nº 3
Socio d tem nº 4
Socio e tem nº 5

é eliminado o sócio b e d e tem de ficar assim:

Socio a tem nº 1
Socio c tem nº 2
Socio e tem nº 3

Alguem me pode dar uma dica sobre como fazer?[/quote]

Você tem duas alternativas:

1 - Ordenar na tua consulta (order by)
2 - Ordenar via código

Particularmente, prefiro deixar no SQL, todavia, se quiser via código, é só usar um Comparator.

[quote=balrog]vc nao esta procurando reordenar nada, o que vc quer eh alterar o id/numero do socio, o que eh uma pessima pratica !! em outras palavras esta procurando sarna pra se cocar, se o numero dado ao socio foi X quando foi cadastrado, este deve permanecer o identificador do socio !!

[/quote]

  • 1 (a menos que seu clube tenha exatamente 10 sócios :twisted: )

É assim, cada Sócio tem Id_Socio e Nr_Socio, estou a usar BD oracle, eu pensei criar um ciclo ordenado que vai fazer um update na BD, Numa unica conexão ficando assim:

update socio set nr_socio = 1 where nr_socio = 1;
update socio set nr_socio = 2 where nr_socio = 3;
update socio set nr_socio = 3 where nr_socio = 4;
update socio set nr_socio = 4 where nr_socio = 7;
update socio set nr_socio = 5 where nr_socio = 8

isto depois do seguinte select a BD

select * from socio order by nr_socio

Que acham? Alguem tem ideia melhor?

Tópico movido para o fórum de persistência. Por favor, leia com atenção a lista de fóruns antes de postar, nem tudo é Java Básico.

Peço desculpa…

PreparedStatement stmt1 = conexao.prepareStatement(sqlInstrucao);
//executa o codigo sql
stmt1.execute(sqlInstrucao);
stmt1.close();

Estou a executar assim o sql…

Mas a instrução é composta por várias instruções, ou seja, “update socio set nr_socio = 1 where nr_socio = 1;update socio set nr_socio = 2 where nr_socio = 3;update socio set nr_socio = 3 where nr_socio = 5;” por exemplo…

Como fazer? Dá erro “java.sql.SQLException: ORA-00911: invalid character”