Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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
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.
Editei lá pra você ver
Phobia... acho que não da pra ter o resultado como desejado, pelo menos, não que eu saiba.
OK, já que não conseguimos solucionar assim...
Eu gravo todos os valores numa matriz e abro ela ao contrario...
Fazer o que né...
Vlw
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
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?
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?
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
A versão que deve estar instalada no servidor deve ser mais antiga do que a que veio instalado com o EasyPHP.
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.