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

É possível fazer um select com agrupamento?


Duduh_Capixaba

Pergunta

Olá! Estou precisando construir um select que ignore dados repetidos. Conheço o comando Group By, e com ele eu até consigo o que eu quero, mas o problema é que ele só me retorna uma coluna da tabela, sendo que eu preciso visualizar todas as colunas.

Esse é o código que eu conheço:

SELECT DESCRICAO
FROM CDPRODU
GROUP BY DESCRICAO
ORDER BY DESCRICAO
E essa seria minha idéia:
SELECT CODIGO, DESCRICAO, REFERENCIA, PRECO1, ESTOQUE
FROM CDPRODU
GROUP BY DESCRICAO
ORDER BY DESCRICAO

E ainda tenho um problema ainda maior, pois o campo ESTOQUE pertence a outra tabela, e não a tabela CDPRODU como eu coloquei no exemplo. Mas com a junção das tabelas eu me viro. Inicialmente eu preciso saber se o que eu quero é possível.

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

6 respostass a esta questão

Posts Recomendados

  • 0

Duduh_Capixaba, acho que você consegue o que quer utilizando o distinct no select.

Quando você usa ele, apenas uma linha (considerando todas as colunas solicitadas) será retornada, sem que haja repetição de qualquer resultado. Ou seja, basta que uma coluna mude para que a linha seja retornada.

Neste caso você não vai usar o group by:

SELECT distinct CODIGO, DESCRICAO, REFERENCIA, PRECO1, ESTOQUE
FROM CDPRODU ORDER BY DESCRICAO

a palavra aparece apenas uma única vez, logo após o select.

Para buscar o campo de outra tabela, você utiliza o Join

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Micheus! É, realmente o DISTINCT ignora dados repetidos, mas só quando eu tenho dados repetidos em todos os campos do SELECT.

Assim ele funciona:

SELECT DISTINCT DESCRICAO, REFERENCIA
FROM CDPRODU ORDER BY DESCRICAO

Ele me retorna apenas uma linha para os resultados iguais, como eu queria. Mas meu campo CODIGO é uma chave primária, aí o DISTINCT já não funciona mais. Mas pelo menos eu já tenho alguma coisa aqui. Obrigado pela ajuda. Abraço!

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

  • 0

Isso mesmo Micheus. Minha idéia não funciona justamente por essa causa. As únicas colunas onde os dados costumam se repetir são DESCRICAO e REFERENCIA. E são eles que me interessam na verdade. Nesses dois campos o usuário pode repetir a mesma descrição infinita vezes. O que acontece é que ele pode ter um produto de mesma descrição e com marcas ou fabricantes diferentes, por exemplo.

Link para o comentário
Compartilhar em outros sites

  • 0
As únicas colunas onde os dados costumam se repetir são DESCRICAO e REFERENCIA. E são eles que me interessam na verdade. Nesses dois campos o usuário pode repetir a mesma descrição infinita vezes. O que acontece é que ele pode ter um produto de mesma descrição e com marcas ou fabricantes diferentes, por exemplo.
Apesar de na prática existirem situações em que isto acaba sendo usado, em termos de normatização do banco de dados (ref. Wikipedia), isto seria eliminado quando a estrutura de seu banco está de acordo com a 4FN (4ª Forma Normal) - um exemplo do link citado:

Quarta Forma Normal

Definição

“Uma tabela está na 4FN, se e somente se, estiver na 3FN e não existirem dependências multivaloradas”.

Exemplo: Dados sobre livros

Relação não normalizada: Livros(nrol, (autor), título, (assunto), editora, cid_edit, ano_public)

1FN:

Livros(nrol, autor, assunto, título, editora, cid_edit, ano_public)

2FN:

Livros(nrol,título, editora, cid-edit, ano_public)

AutAssLiv(nrol, autor, assunto)

3FN:

Livros(nrol, título, editora, ano_public)

Editoras(editora, cid-edit)

AutAssLiv(nrol, autor, assunto)

* Redundância para representar todas as informações

* Evitar todas as combinações: representação não-uniforme (repete alguns elementos ou posições nulas)

Passagem à 4FN:

* Geração de novas tabelas, eliminando Dependências Multivaloradas

* Análise de Dependências Multivaloradas entre atributos:

* autor, assunto -> Dependência multivalorada de nrol

Resultado:

4FN:

Livros(nrol, título, editora, ano_public)

Editoras(editora, cid-edit)

AutLiv(nrol, autor)

AssLiv(nrol, assunto)

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Pessoal!

Pelo que observei da narrativa as tabelas do Duduh_Capixaba ainda estão na 2FN. Está faltando um relacionamento muitos para muitos entre produtos e fornecedores. Este relacionamento é representado por uma tabela contendo, inicialmente, os atributos identificadores de cada uma das tabelas produtos e fornecedores respectivamente.

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...