Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gpmendes

Ordenar campos no MySQL com JSP

Recommended Posts

Olá.Tenho a fictícia situação:Uma tabela no MySQL com os campos id, nome e posição.O campo posição terá valores como 1, 2, 3, 50... ele que definirá a ordem que os nomes serão apresentados.Ao inserir um novo nome, tenho que dizer se ele será o último (faço isso com um COUNT) ou se ele terá a posição 1, 3, 35, etc... Caso a posição dele não seja a última, tenho que alterar os valores de todos os outros posteriores para que a posição não se repita.Ex: Meu novo "nome" que atualmente é 27 (último), vai para a posição 25. Consequentemente, o que está com a posição 25 vira 26 e o com 26 vira 27.Espero que tenha sido claro. A linguagem a gente adapta o problema é que tem que ser com MySQL.Grato, Guilherme

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Se eu entendi direito, você já conseguiu descobrir em qual posição seu registro deve ter certo ? Então o problema seria atualizar os valores posteriores e anteriores a ele ? Bem, como você está utilizando JSP, dependendo do driver JDBC que você esteja utilizando, dá para utilizar um ResultSet atualizável. De posse de um ResultSet atualizável e sabendo em qual posição você está dentro dele(está posição é o seu novo nome), basta percorrer o ResultSet para trás e para a frente dessa posição, decrementando e incrementando, respectivamente, o valor da posição dos outros registros, por fim, é só atualizar o ResultSet. Acho que funcionaria sem problemasAté

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi. Valeu pela atenção. você entendeu direito.Vou parar pra pensar no que escreveu e numa lógica para isso, mas tenho a impressão que você sugeriu que eu alterasse um registro e desse um "update", alterasse um registro e desse um "update", ... É isso?A lógica simples e direta que pensei até agora era inserir o registro e indicar o valor posicao. Daí, antes de fazer um insert do valor desta posição, fazer um select pra verificar se alguém já possue o valor. Se possuir, fazer um update. E assim sucessivamente, até acabarem as duplicidades... Me fiz entender?De qualquer forma, VALEU!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim... eu entendei e foi exatamente o que eu disse na msg anterior =) mas você não precisa ficar fazendo select´s, basta navegar dentro do ResultSet que já tem todos os valores. Porém lembre-se que para fazer isso funcionar como estou dizendo, o resultado deve estar ordenado pela posição. Outra coisa, essa posição seria como um ranking entre as pessoas cadastradas no banco de dados por exemplo ? Estará sempre em ordem ou poderão existir posições sem nenhuma pessoa ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi melhor ainda sua explicacao. MUITO OBRIGADO.Agora é botar a cabeca pra funcionar e a mao na massa pra ver se dá certo.Lhe darei um retorno assim que comecar.Na verdade, minha intencao seria a seguinte:Caso eu tenha que listar alguns produtos (claro que naum vale a pena se tiver muitos) e nao puder fazer isso em ordem alfabética ou de insercao(id). E sim, pelo sua importancia para a empresa.Quando eu fosse inserir um produto, faria uma contagem de quantos registros existem e somaria mais um. Este resultado seriam as posicoes que eu colocaria num combo box para serem escolhidas.Muito obrigado e vou ver o que consigo.Guilherme

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso seria interessante então que as posições se repetissem... por exemplo por produtos que tem quase a mesma importância. Tenho um sistema de notícias mais ou menos assim... as mais importantes tem prioridade 5, a menos 4 e assim por diante... assim você poderia agrupar produtos com importâncias semelhantes, o que daria menos trabalho que ficar colocando uma posição para cada produto.Falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.