Ir para conteúdo

POWERED BY:

Arquivado

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

erickhoepfner

Renumeração automática de campo da tabela

Recommended Posts

Renumeração automática de campo da tabela

 

Ordem de Exibição na página através de query:

 

COR ORDEM

-------------------------

Azul 1

Verde 2

Vermelho 3

Preto 4

 

Após a edição do campo ORDEM (de acordo com o que o usuário desejar) ele diz que o "Vermelho" é 1

 

O que quero é que o campo ORDEM seja renumerado automaticamente na tabela, ficando assim:

 

COR ORDEM

-------------------------

Vermelho 1

Azul 2

Verde 3

Preto 4

 

É possível?

Caso não, alguma sugestão?

Obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

com muita programaçao seria possivel sim mas teria que alterar cuidadosamente todas as tabelas relacionadas

 

uma coisa te falo, isto é desnecessario

 

em termo de performance nao muda nada ou quae nada, mas numa dessas mexidas pode fazer com que os valores fiquem trocados e o que era azul vira rosa e por ai vai

Compartilhar este post


Link para o post
Compartilhar em outros sites

com muita programaçao seria possivel sim mas teria que alterar cuidadosamente todas as tabelas relacionadas

 

uma coisa te falo, isto é desnecessario

 

em termo de performance nao muda nada ou quae nada, mas numa dessas mexidas pode fazer com que os valores fiquem trocados e o que era azul vira rosa e por ai vai

Pois é. Entendo.

A situação é a seguinte:

É um portal de Notícias. Em uma área de gerenciamento, eu disponibilizei a opção para o chefe (sempre o chefe) colocar na mão a ordem da exibição do que ele quer. Ou seja, não vale nada ter um Sort By, pois o critério é dele.

Fiz com que todos os registros recebessem um mesmo número, e na edição do registro desejado a classificação receberia uma letra. Ou seja, 01A viria depois de 01. Aí sim, tem um sort by para esse campo.

 

Funciona, mas..... nunca estão satisfeitos.

E acredite se quiser, nest banco não há mais de 30 registros!!!!

É f...

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse eh um tipico caso de falta de bebida alcoolica por parte do desenvolvedor....

 

entao a praga do patrao quer + uma consulta inutil? nos daremos + uma consulta inutil pra ele.....

 

 

 

 

Select * from tabela where cor='Vermelho'

UNION

Select * from tabela

 

 

 

assim vem o vermelho primeiro e depois vem o resto da tabela como tem UNION ele nao duplica as linhas, dessa forma você pode fazer algum bacalhau que adicione

 

Select * from tabela where cor='$cor'

UNION

 

a cada cor escolhida...

 

 

 

 

 

 

 

 

 

 

 

Ou você pode fazer um bacalhau mais bonito...

 

 

select

* ,

CASE Cor

When 'Vermelho' Then '$valor_vermelho'

When 'Azul' Then '$valor_azul'

Else '999'

end as ordenador

from tabela

Order by Ordenador,Cor

 

 

Aih cada cor escolhida pelo chefe gera uma linha *When 'Vermelho' Then '$valor_vermelho'* as cores que ele nao escolher tem valor 999 e sao ordenadas pelo nome da cor normal, caso ele nao escolha nenhuma cor da isso tambem.

 

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse eh um tipico caso de falta de bebida alcoolica por parte do desenvolvedor....

 

entao a praga do patrao quer + uma consulta inutil? nos daremos + uma consulta inutil pra ele.....

 

 

 

 

Select * from tabela where cor='Vermelho'

UNION

Select * from tabela

 

 

 

assim vem o vermelho primeiro e depois vem o resto da tabela como tem UNION ele nao duplica as linhas, dessa forma você pode fazer algum bacalhau que adicione

 

Select * from tabela where cor='$cor'

UNION

 

a cada cor escolhida...

 

 

 

 

 

 

 

 

 

 

 

Ou você pode fazer um bacalhau mais bonito...

 

 

select

* ,

CASE Cor

When 'Vermelho' Then '$valor_vermelho'

When 'Azul' Then '$valor_azul'

Else '999'

end as ordenador

from tabela

Order by Ordenador,Cor

 

 

Aih cada cor escolhida pelo chefe gera uma linha *When 'Vermelho' Then '$valor_vermelho'* as cores que ele nao escolher tem valor 999 e sao ordenadas pelo nome da cor normal, caso ele nao escolha nenhuma cor da isso tambem.

 

 

Espero ter ajudado

Antes de mais nada, muito obrigado!

Mas... acho que não é por aí.

 

Vou dar outro exemplo:

Imagine uma planilha do excel:

Linha1: Bicicleta

Linha2: Patins

Linha3: Bola

 

Se eu inserir uma linha (Barracas) entre a 1 e 2 fica assim:

Linha1: Bicicleta

Linha2: Barracas

Linha3: Patins

Linha4: Bola

 

Tendeu? Ao colocar o registro, os outros são remanejados/renumerados automaticamente.

Ou seja, se na edição do registro ele disser que Barracas recebe 2, os outros renumeram dentro da tabela.

Não existe repetição do número da Linha!

Compartilhar este post


Link para o post
Compartilhar em outros sites

neste caso o melhor a se fazer é criar um novo campo com a ordem de prioridade ai o chefe escolhe o que quer que venha na frente

Compartilhar este post


Link para o post
Compartilhar em outros sites

e como você faz pra saber qual eh a ordem caso o chefe nao diga nada?

 

Outra pergunta, você quer q isso seja a exibiçao de uma consulta ou q fique arrumado desse jeito dentro da tabela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

e como você faz pra saber qual eh a ordem caso o chefe nao diga nada?

 

Outra pergunta, você quer q isso seja a exibiçao de uma consulta ou q fique arrumado desse jeito dentro da tabela?

1) O chefe é que faz o gerenciamento. Criei uma interface que lista as notícias e o número de ordem padrão que é 99 para todas.

2) Assim, ele clica no ícone para editar a matéria e coloca a ordem: 05 por exemplo. E faz isso em todas as (aproximadamente 30) que ele quer ordenar de acordo com o critério dele.

3) Assim, a query vai ordenando o campo ORDEM da tabela de maneira ascendente (que jé está criado no banco é claro).

 

Pra mim tanto faz se os dados (da ordem) ficarão armazenados na tabela ou se serão gerados através de uma query AS ou algo semelhante.

Preferia que ficassem aramzenados, mas se não der...

 

O que quero (ou melhor, o que ele quer) é que ao alterar apenas um registro (a ORDEM) os outros recebam a numeração/ordenação adequada!

1 - Noticia1 - Ordem 1

2 - Noticia2 - Ordem 2

3 - Noticia3 - Ordem 3

 

Aí eu quero que a Notícia3 seja a segunda a ser exibida na página, desse jeito:

1 - Noticia1 - Ordem 1

3 - Noticia3 - Ordem 2

2 - Noticia2 - Ordem 3

 

Viu? Não há uma repetição do Ordem 2!

Quando uma recebe o número de Ordem as outras recebem também nova ordenação.

http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

 

Ah... múltiplo update não rola!!!!

 

Valeu de novo

Obrigado mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem tiozinho é simples

 

quando voce mudar a ordem de uma voce aumenta a ordem de todas as demais que sejam igual ou maior que a ordem que voce escolheu e menor que a ordem anterior, isso porque ja havia uma com aquela ordem.

 

mas nao esqueça de excluir do update a que voce acabou de atualizar

 

tipo assim

 

Id Ordem

 

1 1

2 2

3 3

4 4

5 5

 

se quer que a 4 vire 2 atualize

 

UPDATE TABELA SET Ordem = 2 WHERE Id = 4

 

A tabela ficou assim

 

1 1

2 2

3 3

4 2

5 5

 

Note que ficou dois registros na ordem 2 voce precisa corrigir isso com outro update, lembre-se que voce tem a ordem que a cabou de atualizar (2), a ordem anterior (4) e o registro qeu foi atualizado (4)

 

UPDATE TABELA SET Ordem = Ordem + 1 WHERE Ordem >= 2 AND Ordem < 4 AND Id <> 4

 

A Tabela apos os ajustes

 

1 1

2 3

3 4

4 2

5 5

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qualquer duvida non decorrer de seus trabalhos poste qeu tentaremos ajudar

 

Abraços

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.