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
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
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”