Usuário com melhor resposta
Dúvida em um Select

Pergunta
-
Boa noite,
Estou com uma dúvida em um select.
Vamos imaginar a seguinte tabela:
Codigo Cor 1 Vermelho 2 Amarelo 3 Verde 4 Outra 5 Laranja 6 Azul Preciso dar um select organizando as cores por ordem alfabética, mas quando for imprimir isso na tela, deixar a que está escrito "Outra" por último, ficando assim:
2 Amarelo 6 Azul 5 Laranja 3 Verde 1 Vermelho 4 Outra A principio eu sei como organizar:
SELECT * FROM tabela order by cor
Mas, como devem saber, não daria certo pois o resultado não seria o esperado.
Fico no aguardo,
Respostas
-
Faz 2 select com um union no meio
Code SnippetSELECT
CorId,Nome,NULL AS Ordem FROM Cores WHERE Nome <> 'Outro'UNION
SELECT
CorId,Nome,36667 AS Ordem FROM Cores WHERE Nome = 'Outro'Isso deve resolver
A outra forma, talvez ate mais adequada é criar uma coluna aonde vc devine a ordem e pra "outra" vc poe o valor maximo.
Ficaria algo assim
6 -- Azul -- NULL
1 -- Branco -- NULL
2 -- Preto -- NULL4 -- Roxo -- NULL
3 -- Vermelho -- NULL
5 -- Outro -- 32566E o select fica assim
Code SnippetSELECT
* FROM Cores ORDER BY Ordem,NomeO detalhe eh o seguinte mesmo que vc colocar algum valor pra "Ordem" ele mantem a ordem alphabetica e depois ele organiza pelos numeros. veja:
6 -- Azul -- NULL
1 -- Branco -- NULL
2 -- Preto -- NULL
3 -- Vermelho -- NULL4 -- Roxo -- 3
5 -- Outro -- 32566 -
Boa noite a todos,
Entendi a solução do ViewState, porém não é necessário criar este campo falso, apenas faça assim:
Code SnippetSELECT
Codigo, Cor FROM Cores WHERE Codigo <> 4UNION
ALLSELECT
Codigo, Cor FROM Cores WHERE Codigo = 4Apesar de ser mais focado em SQL Server, acredito que este exemplo dará certo no Access também.
Se vc perceber, pela lógica, este exemplo dará certo pois sempre trará primeiramente aqueles que forem diferentes da cor OUTRA (que possui o código 4) e por último irá juntar com esta linha - OUTRA.Veja se deu certo e, qualquer dúvida retorne.
[ ]s.
Todas as Respostas
-
Faz 2 select com um union no meio
Code SnippetSELECT
CorId,Nome,NULL AS Ordem FROM Cores WHERE Nome <> 'Outro'UNION
SELECT
CorId,Nome,36667 AS Ordem FROM Cores WHERE Nome = 'Outro'Isso deve resolver
A outra forma, talvez ate mais adequada é criar uma coluna aonde vc devine a ordem e pra "outra" vc poe o valor maximo.
Ficaria algo assim
6 -- Azul -- NULL
1 -- Branco -- NULL
2 -- Preto -- NULL4 -- Roxo -- NULL
3 -- Vermelho -- NULL
5 -- Outro -- 32566E o select fica assim
Code SnippetSELECT
* FROM Cores ORDER BY Ordem,NomeO detalhe eh o seguinte mesmo que vc colocar algum valor pra "Ordem" ele mantem a ordem alphabetica e depois ele organiza pelos numeros. veja:
6 -- Azul -- NULL
1 -- Branco -- NULL
2 -- Preto -- NULL
3 -- Vermelho -- NULL4 -- Roxo -- 3
5 -- Outro -- 32566 -
Boa noite...
Obrigado por responder...
No meu caso, a mais viável seria a primeira opção que você passou... tentei aqui, mas não funcionou.... na verdade ficou como se eu tivesse colocado um select simples como por exemplo:
SELECT * FROM TBLCores ORDER BY NomeCor
Veja como fiz...
Code Snippet' ## Retorna as Cores cadastradas
Set cmdVerificaCores = Server.CreateObject("ADODB.Command")
cmdVerificaCores.ActiveConnection = DataCores
cmdVerificaCores.CommandText = "SELECT * FROM TBLCores WHERE NomeCor <> 'Outra' Union SELECT * FROM TBLCores WHERE NomeCor = 'Outra'"
cmdVerificaCores.CommandType = 1
Set rsVerificaCores = Server.CreateObject("ADODB.Recordset")
rsVerificaCores.Open cmdVerificaCores, , 3, 3do While rsVerificaCores.EOF
response.write rsVerificaCores("NomeCor") & "<br>"
rsVerificaCores.movenext
loop
-
-
-
-
-
-
No exemplo que eu fiz eu crio a coluna mas de mentira, ela não precisa estar na tabelaCode Snippet
SELECT
CorId,Nome,NULL AS Ordem FROM Cores WHERE Nome <> 'Outro'UNION
SELECT
CorId,Nome,36667 AS Ordem FROM Cores WHERE Nome = 'Outro' -
Boa noite a todos,
Entendi a solução do ViewState, porém não é necessário criar este campo falso, apenas faça assim:
Code SnippetSELECT
Codigo, Cor FROM Cores WHERE Codigo <> 4UNION
ALLSELECT
Codigo, Cor FROM Cores WHERE Codigo = 4Apesar de ser mais focado em SQL Server, acredito que este exemplo dará certo no Access também.
Se vc perceber, pela lógica, este exemplo dará certo pois sempre trará primeiramente aqueles que forem diferentes da cor OUTRA (que possui o código 4) e por último irá juntar com esta linha - OUTRA.Veja se deu certo e, qualquer dúvida retorne.
[ ]s.
-
-