Usuário com melhor resposta
Ordenação por data - Relacao registo pai, registo filho

Pergunta
-
+-----------------+-------------------+ | MOVIMENTO | | +-----------------+-------------------+ | ID | PK | | MOVIMENTOPAI_ID | FK [MOVIMENTO.ID] | | DESCRICAO | | | DATA | | +-----------------+-------------------+
+----+------------------+------------------------------------------+------------+ | ID | ParentMovementId | Descrição | Data | +----+------------------+------------------------------------------+------------+ | 1 | NULL | Movimento Pai 1 | 01-10-2017 | | 2 | 1 | Sub movimento 1 filho do Movimento Pai 1 | 02-10-2017 | | 3 | 1 | Sub movimento 2 filho do Movimento Pai 1 | 01-01-2017 | | 4 | NULL | Movimento Pai 2 | 31-09-2017 | | 5 | NULL | Movimento Pai 3 | 28-07-2017 | +----+------------------+------------------------------------------+------------+
Boa noite,
Com base no apresentado em cima, gostaria de saber como poderei fazer para obter o seguinte resultado:
- Movimentos Pai (ParentMovementId = NULL) ordenados por Data desc
- Movimentos Filhos listados por debaixo dos Movimentos Pai (sem ordenação)
Respostas
-
Deleted
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 11 de dezembro de 2017 12:21
Todas as Respostas
-
Boa tarde,
Experimente fazer uns testes dessa forma:
select m.ID, m.MovimentoPai_ID, m.Descricao, m.Data, coalesce(p.Data, m.Data) as DataPai, coalesce(m.MovimentoPai_ID, m.ID) as IDPai from Movimento as m left join Movimento as p on p.ID = m.MovimentoPai_ID order by DataPai desc, IDPai
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Na query foi utilizado o Left Join para fazer uma junção com a própria tabela para obter a data do movimento pai.
A função Coalesce retorna o primeiro valor não nulo entre as colunas passadas como parâmetro. Nessa query a função foi utilizada para obter a data do movimento pai (p.Data) caso exista ou então a própria data (m.Data), e o ID do movimento pai (m.MovimentoPai_ID) ou o próprio (m.ID).
No Order By temos a coluna DataPai por ordem descendente e a coluna IDPai para que os movimentos filhos sejam retornados na sequencia.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
Deleted
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 11 de dezembro de 2017 12:21