Fórum Selecionar o registro do Group by #371895
02/07/2009
0
estou com uma duvida tenho uma table onde tenho diversos registros com a mesma matricula, porém com diferentes data_excl. Estou usando o GROUP BY para agrupar para mim poder migrar os dados desta table para outra, até aí tudo bem o problema que ele me mostra o registro mais velho de cada matricula e eu gostaria de ter o mais novo.Tipo: se eu tenho tres registros com a matricula 3, porém com datas de exclusão: 01/01/2007, 01/01/2008, 01/01/2009, ele me mostra sempre o registro com a data 01/01/2007 e eu gostaria de visualizar o registro com a data 01/01/2009.
Qual a alternativa que eu teria ? o código que eu estou usando é este mais ja tentei outras opções.
select * from excluidos group by matricula;
uso o mysql 5.0 com delphi 2006
Robsonr
Curtir tópico
+ 0Posts
02/07/2009
Osocram
select * from excluidos group by matricula order by matricula, data;
ou
select * from excluidos group by matricula order by matricula, data desc;
ou
select * from excluidos group by matricula order by matricula, desc data;
eu nao uso o My sql não sei a sintaxe, mas tenta assim p ver se funciona, ou coloca o order by antes do group by.
Gostei + 0
02/07/2009
Robsonr
select * from excluidos group by matricula order by matricula, data desc;
mais mesmo assim me retornou os registros mais antigos
o order by antes do group by da erro de sintaxe
Gostei + 0
02/07/2009
Emerson Nascimento
Gostei + 0
02/07/2009
Robsonr
Gostei + 0
02/07/2009
Emerson Nascimento
select excl1.* from excluidos excl1 where excl1.data_excl = (select MAX(excl2.data_excl) from excluidos excl2 where excl2.matricula = excl1.matricula)
Gostei + 0
03/07/2009
Robsonr
valew msm
Gostei + 0
03/07/2009
Robsonr
ocorreu um pequeno problema na hora de migrar que eu não tinha reparado , existem matriculas iguais com a mesma data_excl e eu não posso ter matriculas repetidas , tem como filtrar isto??
Gostei + 0
03/07/2009
Robsonr
select excl1.* from excluidos excl1 where excl1.data_excl = (select MAX(excl2.data_excl) from excluidos excl2 where excl2.matricula = excl1.matricula) group by excl1.matricula
Gostei + 0
03/07/2009
Lehapan
tenta colocar o DISTINCT
select DISTINCT excl1.* from excluidos excl1 where excl1.data_excl = (select MAX(excl2.data_excl) from excluidos excl2 where excl2.matricula = excl1.matricula)
Espero ter ajudado.
Gostei + 0
03/07/2009
Robsonr
Gostei + 0
03/07/2009
Lehapan
Exemplo: caso a sua tabela tenha a chave primária com os campos ID e Matricula, no subselect deve ser colocado [b:fe05e91891]´where excl2.ID = excl1.ID and excl2.Matricula = excl1.atricula´[/b:fe05e91891]
Espero ter ajudado
Gostei + 0
03/07/2009
Robsonr
Gostei + 0
03/07/2009
Lehapan
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)