order by+HQL

23/09/2011

0

seguinte, chefia esperta pediu o seguinte,...

tenho um campo la de uma tabela que fica os seguintes valores:

Cadastrado
Em validacao
Nao aprovado
Validado

se eu usar o order by ASC:

Cadastrado
Em validacao
Nao aprovado
Validado

se eu usar o order by DESC:

Validado
Nao aprovado
Em validacao
Cadastrado

mas o milagre que tenho que fazer e ordenar assim:

Nao aprovado
Cadastrado
Em validacao
Validado


alguém tem uma sugestão de como fazer isso????
será que finalmente terei ajuda no fórum?
Wisley Souza

Wisley Souza

Responder

Posts

23/09/2011

Davi Costa

Seria interessante entender mais das suas tabelaspara uma ajuda mais elegante. Mas de ante mão vou te dizer q não é impossível , vc cria mais uma coluna de ordem para sua tabela e dáorder by através dela, e vc ordena conforme sua chefia quer no banco, porém pode ter uma forma melhor..é o que falei estou muito descontextualizado p ajudar melhor.

att Davi
Responder

23/09/2011

Wisley Souza

nao era bem o que eu queria, mas tu me deu uma ideia, vou criar um transiente e vou ordenar por ele
Responder

23/09/2011

Wisley Souza

pelo jeito o tipo transient nao funciona na consulta hql...
Responder

23/09/2011

Robson Teixeira

Crie um campo na tabela e ordene por esse campo acho que é a melhor solução pedida pela chefia
exemplo

atualmente no banco
NOME Type
--------------------
Cadastrado 2
Em validacao 3
Nao aprovado 1
Validado 4

resultado da consulta com order by
NOME Type
--------------------
Nao aprovado 1
Cadastrado 2
Em validacao 3
Validado 4


sacou????
espero ter ajudado
att
robson
Responder

23/09/2011

Wisley Souza

ima gina o seguinte

Pessoa status
fulano Nao Aprovado
cicranu Cadastrado
FDP Validado
EU revalidado


agora imagina que tenho que ordenar na forma que te disse, como faço pelo estatus, mas nao e desc nem ASC.. e misturado, to puto com esse pedido, coisa mais I@$#$
Responder

23/09/2011

Robson Teixeira

NOME Type
--------------------
Cadastrado 2
Em validacao 4
Nao aprovado 1
Validado 3

NOME Type
--------------------
Nao aprovado 1
Cadastrado 2
Validado 3
Em validacao 4

ordenação só é possivel tanto em codigo quanto no banco sempre em ASC ou DESC so precisa escolher o atributo que vai ser ordenado e montar atraves dele.

Responder

23/09/2011

Wisley Souza

Solucionei, com ajuda de um amigo la do Forum de SQL misturei a dica dele e deu resultado


fica adica pra quem precisar ordenar de uma maneira bizarra como minha chefe pediu
order by (case inv.status +
          when Nao Aprovado then 1 +
          when Cadastrado then 2 +
	  when Revalidado then 3 +
	  when Em Validacao then 4 else 5 end)



resolvido, fica a dica, nao precisei criar um campo na tabela ;)
Responder

23/09/2011

Davi Costa

Show de bola! Muito boa a iniciativa de postar sua solução.

Assim que possível fechar o chamado.

att Davi
Responder

23/09/2011

Robson Teixeira

Parabens kra show mesmo e assim realmente é melhor.
Responder

26/09/2011

Wisley Souza

cara ate qria fechar, mas não tem a opção, fechar... sumiu hehe
Responder

27/09/2011

Dyego Carmo

Deu certo ?
Se funcionou... poderia fechar o chamado ?

Valeu !
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar