Ir para conteúdo

POWERED BY:

Arquivado

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

Phobia Frost

SELECT ORDER BY ..... DESC Outra Forma

Recommended Posts

Pessoal, hoje estava eu a programar e dei em frente a um problema(dentre os muito) e não consegui resolver.

 

Seguinte.

 

Tenho uma classe de paginação.

 

Faço um SELECT SQL_CALC_FOUND_ROWS * FROM tabela ORDER BY campo ASC LIMIT '.$paginacao->ini().', '.$paginacao->fim();

 

tudo bem... os limites vem da seguinta forma

 

30, 30 ou 60, 30 ou 90,30... assim por diante.

 

Só que se eu por ao invés de ASC, DESC os resultados não são os mesmos ele faz o SELECT começando do final, tem alguma forma via MySQL de resolver isso? Quero que os mesmo resultados do SELECT ASC sejam os mesmo que os do DESC...

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara... Essa realmente ficou bem complicado de entender.

 

Como é que você quer que a lista ordenada de forma ASCendente seja igual a lista ordenada de forma DESCendente?

 

Se puder explicar melhor, faça um exemplo do resultado esperado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Editandooooo

 

Suponhamos esses dados numa tabela chamada clientes no MYSQL.

 

Ana

Angela

Alberto

Alfredo

Azucrin

 

Baco

Bart

Bobo

Breno

Bruno

 

Camila

Carla

Carlos

Cassio

Clóvis

 

beleza... Clientes postos...

 

Agora eu tenho um campo de busca

nele eu digito o nome e busco no banco por ele.

E tenho dois radio buttom...

 

UM que faz o select ASC e outro DESC

 

SENDO QUE A MINHA PAGINAÇÃO APRESENTA SÓ 3 RESULTADOS POR PAGINA

 

no campo eu ponho a letra B e busco.

 

Os RESULTADOS POR PAGINA EM ORDEM CRESCENTE SÃO

 

Por pagina então aparece o seguinte

PAGINA 1

 

Alberto

Baco

Bart

 

PAGINA 2

 

Bobo

Breno

Bruno

 

AI VEM O PROBLEMA

se PAGINA 1 eu ponho em ordem DESC

 

O SLQ ME RESPONDE NA PAGINA 1 MESMO

 

Bruno

Breno

Bobo

 

O RESULTADO QUE EU ESTARIA ESPERANDO SERIA

 

Bart

Baco

Alberto

 

OU SEJA ELE COMEÇA O SELECT DO ULTIMO RESULTADO ENCONTRADO...

 

NA PRATICA

 

PAGINA 1

Bruno

Breno

Bobo

 

PAGINA 2

Bart

Baco

Alberto

 

QUANDO A PRIMEIRA PAGINA DEVERIA TER SIDO

 

Bart

Baco

Alberto

 

LEMBRANDO QUE ESTOU PAGINANDO 3 RESULT POR PAGINA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo prático...

 

Nomes que foram cadastrados numa tabela NOMES:

 

FELIPE

ANA

RODRIGO

MARIA

JOAO

JULIA

Resultado para: select * from NOMES order by nome ASC

 

ANA

FELIPE

JOAO

JULIA

MARIA

RODRIGO

Resultado para: select * from NOMES order by nome DESC

 

RODRIGO

MARIA

JULIA

JOAO

FELIPE

ANA

Sendo assim, não vejo nenhum erro nos resultados apresentados na sua consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples...

 

 

você faz uma query da sub-query invertendo o resultado.

 

Exemplo:

 

select * from

(Select * from taba order by nome asc Limit 0,30) as abc

Order by nome desc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma sub-query não me retorna um resultado somente?

 

como faria para inverter todos os dados de uma consulta como essa

 

SELECT * FROM pessoas ORDER BY nome ASC LIMIT 60,30

 

?

 

pois preciso da matriz inteira...

 

desse select preciso do

nome, id, endereço...

 

Alguma idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você testar vai ver que funciona

 

 

Quanto a pergunta:

 

Select * from

(SELECT * FROM pessoas ORDER BY nome ASC LIMIT 60,30) as abc

Order by nome desc

 

 

explicando:

 

 

SELECT * FROM pessoas ORDER BY nome ASC LIMIT 60,30 ----> Digamos que daria A,B,C

 

entao quando você faz

 

Select * from

(SELECT * FROM pessoas ORDER BY nome ASC LIMIT 60,30) as abc

Order by nome desc

 

 

seria algo como fazer (apesar dessa sintaxe nao existir)

 

Select * from

('A', 'B' , 'C') as abc

Order by nome desc

 

e você obteria o resultado C,B,A

 

ou seja:

 

na consulta interna (dentro dos parentesis) você pega seu conjunto desejado de resultados (A,B,C)

 

na consulta externa você apenas esta ordenando os valores pra ficar C,B,A

 

Resumindo uma consulta consulta o resultado da outra

 

ficou claro agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, eu até tinha entendido, mas não havia conseguido de forma alguma desse jeito...

 

por isso perguntei denovo...

 

Acabei instalando o EasyPHP no meu micro, e no phpmyadmin dele...

 

funcionou PERFEITAMENTE, por isso agradeço giesta.

 

já no phpmyadmin do servidor onde está tudo hospedado a query não funciona, irei contatar o administrador.

 

Obrigado cara, vlw mesmo... solução simples e que vai me quebrar muitos galhos.

 

abraço

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.