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

(Resolvido) Problemas com agrupamento de dados


Guest Sidney Lima

Pergunta

Guest Sidney Lima

Galera, descobri esse fórum hj e, pelo nível das respostas q li, o pessoal é fera. Minha dúvida é a seguinte:

Tenho uma tabela com os campos

  • ID (autoincremento)
  • Sequencial (Varchar)
  • Remessa (Varchar)
  • Data1 (datetime)
  • Entre outros...

Num mesmo sequencial podem haver várias remessas. O problema é q preciso de um select q me retorne TODOS os sequenciais, mas apenas A ÚLTIMA REMESSA. Tentei usar GROUP BY, mas são muitos campos na consulta e, se usar todos no agrupamento, ele acaba retornando todos os registros... não sei mais o q fazer! :wacko: Será q alguém do grupo saberia como resolver esse pepino?

Desde já agradeço,

Sidney Lima

Porto Alegre/RS

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Guest Visitante

Infelizmente não, Kuroi... vou tentar explicar melhor:

A tabela seria mais ou menos assim

id   sequencial   remessa   data1            [mais vários outros campos]
1    000001       1              2008-01-02   ...
2    000001       2              2008-01-04   ...
3    000001       3              2008-01-04   ...
4    000001       4              2008-01-05   ...
5    000001       5              2008-01-08   ...
6    000002       1              2008-01-08   ...
7    000002       2              2008-01-08   ...
8    000001       6              2008-01-09   ...
9    000002       3              2008-01-11   ...
10  000003       1              2008-01-12   ...
11  000003       2              2008-01-14   ...
O q eu preciso é extrair apenas as últimas remessas, E MAIS todos os campos referentes a esse registro... dessa forma:
id   sequencial   remessa   data1            [mais vários outros campos]
8    000001       6              2008-01-09   ...
9    000002       3              2008-01-11   ...
11  000003       2              2008-01-14   ...

Uma das tentativas q usei foi:

SELECT DISTINCT sequencial, MAX(remessa) AS remessa, data1, ..., FROM tabela GROUP BY sequencial

Mas não rolou porque, pra usar o GROUP BY, eu teria q restringir TODOS os outros campos, e aí o resultado não seria o q procuro... ah, pra usar o "MAX(remessa)" eu mudei o tipo de dados pra INT. Não sei se fui claro, mas tá fundindo minha cabeça... :huh:

Se precisar q eu esclareça mais, posso colocar todos os campos q preciso, e mais o select q tentei, mas já adianto q são 17 campos, e consultando 5 tabelas... :wacko:

Valeu pela força, Kuroi! Espero q tenha alguma alternativa pra mim... ;)

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Será q existe alguma forma de eu fazer uma pesquisa concatenando valores? Tipo:

SELECT id, sequencial, remessa, data1,  [mais vários outros campos] FROM tabela WHERE sequencial || remessa IN (SELECT DISTINCT sequencial, MAX(remessa) AS remessa FROM tabela GROUP BY sequencial)

Pergunto isso porque a única forma q eu consegui extrair a última remessa de cada sequencial, mas não tem os outros dados q preciso... se eu conseguisse concatenar sequencial e remessa, e buscá-los na sub-query, aí seria perfeito, mas não sei nem se é possível nem a sintaxe correta pra isso...

Alguém aí pode dar mais uma força?

Valeu!!! ;)

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Andreia: Dessa forma funciona, porque são só dois campos. Mas, como disse no post anterior, tenho váááááários campos, e não daria pra agrupar tudo sob pena de não retornar o q preciso... o q eu quero é a última remessa pra cada sequencial, E MAIS todos os outros dados do registro... mas, mesmo assim, valeu pela tentativa!!! ;)

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, consegui resolver!!! \o/ \o/ \o/ \o/

Fiz o seguinte:

SELECT 
    d.sequencial, 
    d.remessa, 
    d.id, 
    ...
FROM 
    tb_1 AS d, 
    ...
WHERE 
    d.id IN 
        (SELECT MAX(id) AS id FROM tb_1 GROUP BY sequencial) 
    AND
    ...

Valeu pela força!!!

Um abraço a todos,

Sidney Lima

Porto Alegre/RS

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...