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

Como organizar listagem por ID e por "maior data"


Rubiz Gardini

Pergunta

Olá a todos, td bem?

Bem, eu estou com um "probleminha" nesse site, na parte de traillers.

Quando o cliente edita um trailler que já existe, adicionando um 2º trailler ou um teaser, ou o que quer q seja, a data da postagem muda para a data de hoje; se ele inclui a primeira vez dia 5/07, e edita incluindo um novo trailler, muda pra 18/07, ou melhor... no banco fica registrado 2008-07-18.

Hoje, se ele edita o ultimo trailler da lista, ele quer que o trailler "suba" e fique como primeiro item da lista de traillers. o que acontece é q eu chamo a listagem organizando por ID, e portanto, o trailler não "sobe" e fica no topo da lista.

Como eu poderia organizar isso por ID, mas tb pela "maior data"???

Alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Não seria o caso de você organizar pela data então? De qualquer maneira você pode ter N elementos no ORDER BY, por exemplo...

SELECT * FROM tabela WHERE campo = 'x' ORDER BY campo 1 ASC, campo2 DESC

No caso a query acima ordena pelo primeiro campo de for crescente e dentro dessa primeira ordenação ele re-ordena pelo segunda campo de forma decrescente.

Link para o comentário
Compartilhar em outros sites

  • 0

Então a função que pega essa data é uma função meio que "genérica", ela pega diversos outros dados...

Mesmo assim, como seria a cláusula SQL pra que eu pegasse pela data maior?

==== editado ============================================================

Se eu colocar um order by data desc ele já pega?????

Editado por Rubiz Gardini
Link para o comentário
Compartilhar em outros sites

  • 0
Olá a todos, td bem?

Bem, eu estou com um "probleminha" nesse site, na parte de traillers.

Quando o cliente edita um trailler que já existe, adicionando um 2º trailler ou um teaser, ou o que quer q seja, a data da postagem muda para a data de hoje; se ele inclui a primeira vez dia 5/07, e edita incluindo um novo trailler, muda pra 18/07, ou melhor... no banco fica registrado 2008-07-18.

Hoje, se ele edita o ultimo trailler da lista, ele quer que o trailler "suba" e fique como primeiro item da lista de traillers. o que acontece é q eu chamo a listagem organizando por ID, e portanto, o trailler não "sobe" e fica no topo da lista.

Como eu poderia organizar isso por ID, mas tb pela "maior data"???

Alguém poderia me ajudar?

Oi, 'Rubiz Gardini'!

sua sql ficaria assim.

SELECT * FROM minhatabela WHERE id = 'x' ORDER BY id ASC, data DESC
Tal como mencionado pelo colega ESerra. Para melhorar a performance você poderia criar um índice por id ASC, data DESC.
CREATE INDEX nomedoindice ON minhatabela (id ASC, data DESC)

Link para o comentário
Compartilhar em outros sites

  • 0

======== editado =========================

Se uma tabela chamada que não tenha o campo "data" pode dar erros na função?

Ele pode ter 2 traillers do dia 18/07 por exemplo, mas ter atualizado o de Id 10 ao invés do de Id 11, nesse caso como está em cima, iria aparecer diferente do que ele quer, ainda... q saco isso né? uma solução seria tb gravar a hora, mas como faço isso?

O meu campo na tabela teria que ser datetime e além de gravar date('Y-m-d') teria outras coisas né?

Editado por Rubiz Gardini
Link para o comentário
Compartilhar em outros sites

  • 0
======== editado =========================

Se uma tabela chamada que não tenha o campo "data" pode dar erros na função?

Ele pode ter 2 traillers do dia 18/07 por exemplo, mas ter atualizado o de Id 10 ao invés do de Id 11, nesse caso como está em cima, iria aparecer diferente do que ele quer, ainda... q saco isso né? uma solução seria tb gravar a hora, mas como faço isso?

O meu campo na tabela teria que ser datetime e além de gravar date('Y-m-d') teria outras coisas né?

Qual a estrutura de sua tabela (A que você deseja fazer o SELECT)?

Para a primeira pergunta a resposta é SIM. Vai dar erro se você está falando em um campo de nome data do tipo date que usei como exemplo na resposta do post anterior.

Na segunda pergunta a resposta é: Transforme o campo data de DATE para TIMESTAMP. Ele virá com horário e a resposta que dei no´post anterior continuará satisfatória, além de não afetar em nada o funcionamento do que você já tem programado.

A resposta para a terceira pergunta já foi dada acima.

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,4k
    • Posts
      652,2k
×
×
  • Criar Novo...