Ir para conteúdo
Fórum Script Brasil
  • 0

Order By


Thales Lacerda

Pergunta

Pessoal, estou precisando fazer uma consulta em uma tabela que retorne os últimos 10

registros e que possua critério de ordenação.

O usuário poderá escolher alguns tipos de ordenação como: data, valor, historico.

Com a consulta apresentada abaixo, ela irá primeiro ordenar para depois

pegar os 10 últimos. Esse é o problema, pois esses 10 valores não podem ser alterados independente do tipo de ordenação.

$order = $_GET['order'];

$sql = mysql_query("select * from usuarios order by $order limit 10");

Alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Pessoal, estou precisando fazer uma consulta em uma tabela que retorne os últimos 10

registros e que possua critério de ordenação.

O usuário poderá escolher alguns tipos de ordenação como: data, valor, historico.

Com a consulta apresentada abaixo, ela irá primeiro ordenar para depois

pegar os 10 últimos. Esse é o problema, pois esses 10 valores não podem ser alterados independente do tipo de ordenação.

$order = $_GET['order'];

$sql = mysql_query("select * from usuarios order by $order limit 10");

Alguém pode me ajudar?

Oi, Thales!

O que você necessita é separar as consultas em duas. Uma buscando os 10 primeiros registros e outra ordenando conforme você deseja.

Para buscar os primeiros 10 registros, sugiro a criação de uma tabela temporária que residirá na memória RAM e esta é criada assim:

CREATE TEMPORARY TABLE temp (
... aqui entra a lista de campos que você necessita....
)ENGINE = MEMORY;
Agora carregue a tabela temporária com os dados dos 10 primeiros registros da tabela física. Isto se faz assim:
INSERT INTO temp ( ...conforme a lista de campos criada...)
SELECT ...conforme a lista de campos criada na tabela temp... FROM usuarios LIMIT 10;
e, agora, a ordenação para exibição:
SELECT ...conforme a lista de campos criada na tabela temp... FROM temp ORDER BY campo;
Quando terminar de usar a tabela temp, não se esqueça de destruí-la para liberar memória. Faça isto assim:
DROP TABLE temp

É só. Qualquer dúvida é só postar novamente.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...