Usuário com melhor resposta
Select?

Pergunta
-
Bom dia prezados,
Tenho uma tablea de categorias:
ID Descricao
1 TV
2 Aparelho de som
3 DVD
4 Computador
Minha dúvida é a seguinte, tenho de dar um select que me mostre o DVD em primeiro e os restantes em ordem alfabetica, como faço isso?
Grato
Respostas
-
-
Marcelo,
Isso mesmo, quando se utilizar o comando Union All, o order by só pode ser declarado após o último Select, e ele ira ordenar os dados em todos os selects!!!
- Marcado como Resposta Marcelo Mohr Maciel quarta-feira, 25 de março de 2009 16:37
-
Boa Tarde,
Veja o exemplo abaixo:
Code Snippetcreate
table #tbl (ID INT, Nome VARCHAR(50))INSERT
INTO #tbl VALUES (1,'TV')INSERT
INTO #tbl VALUES (2,'Aparelho de som')INSERT
INTO #tbl VALUES (3,'DVD')INSERT
INTO #tbl VALUES (4,'Computador')SELECT
ID, Nome FROM (select
ID, Nome, 1 as Ord FROM #tbl WHERE Nome = 'DVD'UNION ALL
select
ID, Nome, 2 as Ord FROM #tbl WHERE Nome != 'DVD') AS QOrder
By OrdEm todo caso, recomendo rever o seu modelo de dados. Não é comum a ordem fazer diferença nesse nível (não há nenhum atributo que simplesmente faça sentido essa ordem. Se o DVD tem de vir na frente é porque existe algum motivo e se esse motivo existe deve ser contemplado no modelo.
[ ]s,
Gustavo
-
Gustavo,
Da forma que estava o select ainda não estava retornando em ordem alfabética, aproveitei seu código e ficou assim:
Code SnippetSELECT
ID, descricao FROM (select ID, descricao, 1 as Ord FROM categoria WHERE descricao = 'DVD'UNION
ALLselect
ID, descricao, 2 as Ord FROM categoria WHERE descricao != 'DVD') as QOrder
By ord,Q.descricao
Todas as Respostas
-
-
-
Marcelo,
Isso mesmo, quando se utilizar o comando Union All, o order by só pode ser declarado após o último Select, e ele ira ordenar os dados em todos os selects!!!
- Marcado como Resposta Marcelo Mohr Maciel quarta-feira, 25 de março de 2009 16:37
-
-
Boa Tarde,
Veja o exemplo abaixo:
Code Snippetcreate
table #tbl (ID INT, Nome VARCHAR(50))INSERT
INTO #tbl VALUES (1,'TV')INSERT
INTO #tbl VALUES (2,'Aparelho de som')INSERT
INTO #tbl VALUES (3,'DVD')INSERT
INTO #tbl VALUES (4,'Computador')SELECT
ID, Nome FROM (select
ID, Nome, 1 as Ord FROM #tbl WHERE Nome = 'DVD'UNION ALL
select
ID, Nome, 2 as Ord FROM #tbl WHERE Nome != 'DVD') AS QOrder
By OrdEm todo caso, recomendo rever o seu modelo de dados. Não é comum a ordem fazer diferença nesse nível (não há nenhum atributo que simplesmente faça sentido essa ordem. Se o DVD tem de vir na frente é porque existe algum motivo e se esse motivo existe deve ser contemplado no modelo.
[ ]s,
Gustavo
-
-
Gustavo,
Esse select irá preencher um dropdown quando meu usuario quiser mudar a categoria de algum produto.
Em primeiro fica a categoria atual do produto e logo abaixo segue a lista das demais categorias.
Existe forma melhor de fazer isso?
-
Gustavo,
Da forma que estava o select ainda não estava retornando em ordem alfabética, aproveitei seu código e ficou assim:
Code SnippetSELECT
ID, descricao FROM (select ID, descricao, 1 as Ord FROM categoria WHERE descricao = 'DVD'UNION
ALLselect
ID, descricao, 2 as Ord FROM categoria WHERE descricao != 'DVD') as QOrder
By ord,Q.descricao -
David,
Importa sim, a busca pela nova categoria fica mais clara para o usuario se estiver em ordem alfabetica (quando houver umas 15 categorias ou mais) o dropdown e se ele não achar nenhum categoria que sirva a seus propósitos, saberá que a primeira é a que estava selecionada.
Obrigado pela ajuda rapaziada., valeu!
-