Reordenar campo de base dados

7 respostas
C

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?

7 Respostas

mveloso

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.

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

nel

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?

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.

E

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

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

É 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?

ViniGodoy

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.

C

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”

Criado 29 de março de 2012
Ultima resposta 29 de mar. de 2012
Respostas 7
Participantes 6