SOMAR CODIGOS REPETIDOS DE UM ARRAY

VALDECYR 27/06/2012 13:07:50
#405019
Boa tarde Pessoal !

Por favor,
Tenho esse select abaixo:

SELECT distinct ped.codproduto, ped.pedido, mat.nome
FROM produtos p, pedmaterial ped, matricula mat
WHERE ped.codaluno = mat.codigo order by mat.nome

que me traz como resultado:

CodProduto pedido nº Aluno

50, 2 Ademir Roberto
9, 50, 1 Francisco Carlos
52, 4 Gerson Gimenes
9, 51, 3 Miriam Prado

Não estou sabendo como fazer, pra mostrar também a soma dos códigos de cada produto, tipo:

ProdutoCod Quantidade
50 2
9 2
51 1
52 1

temo como fazer com o count?, fazendo antes um split no cod do produto?.. Penso que seria ideal trazer todos os dados no mesmo Select.

Agradeço pela colaboração
LLAIA 27/06/2012 13:16:26
#405021
Caraaacaaa !!! Melhor vc rever essa modelagem, pois vc atropelou a primeira forma normal.

Citação:

Uma relação estará na Primeira forma normal 1FN, se e somente se todos os domínios básicos contiverem somente valores atômicos (não contiver grupos repetitivos).
Em outras palavras podemos definir que a primeira forma normal não admite repetições ou campos que tenha mais que um valor.




http://www.luis.blog.br/primeira-forma-normal-1fn-normalizacao-de-dados.aspx
VALDECYR 28/06/2012 10:07:19
#405096
Certo Llaia,

Eu estou querendo aproveitar esses dados, que foram gravados assim a pedido do usuário. no caso os códigos dos produtos agrupados por pedido, para outro propósito no programa. Queria aproveitar essa tabela pra fazer um relatório de produtos pendentes, sei que foge da lógica, mas sei que tem um jeito de fazer, já fiz uma vez algo parecido. Mas se não der certo vou ter que salvar os dados que preciso separando por código de produto em outra tabela pra sair o relatório.
KERPLUNK 28/06/2012 10:39:43
#405100
Do jeito que você está fazendo, vai ficar bem difícil e muito falho... melhor mesmo é remodelar...
LUIZCOMINO 28/06/2012 10:50:23
#405102
Resposta escolhida


[ô]+/- Assim pra você entender

Dim Mtz As Variant
Dim MtzAaux() As Variant
Dim Qtd As Long
Dim i As Integer


[ô]Jogando os Dados Na Matriz
Do While Not Rs.EOF
Mtz = Split(Rs!CodProduto, [Ô],[Ô])
For i = 0 To UBound(Mtz)
Qtd = Qtd + 1
ReDim Preserve MtzAaux(Qtd)
MtzAaux(Qtd) = Mtz(i)
Next
Rs.MoveNext
Loop

[ô]Cria Tabela Temporario
[ô]Jogando na Tabela Temporario

For i = 1 To UBound(MtzAaux)
[ô]Gravar na Tb_Temp
Next

[ô]Select da Maneira que Você Quiser na Tabela temporaria
VALDECYR 28/06/2012 11:59:23
#405108
é isso aí Luiz !

Pelo que vi no seu código, vai ser perfeito pro que preciso, era o que estava tentando fazer.
Só vou poder testar amanhã cedo, porque trabalho a tarde, mas retorno amanhã cedo pra encerrar o tópico.
Obrigado.
Abraço.
NALDOXD 28/06/2012 12:01:40
#405109
tente coloca no select

SELECT ped.codproduto, ped.pedido, mat.nome
FROM produtos p, pedmaterial ped, matricula mat
WHERE ped.codaluno = mat.codigo AND ped.codproduto <> ped.codproduto order by mat.nome
VALDECYR 29/06/2012 10:22:11
#405176
Bom dia !
Obrigado à todos pelas dicas.
Valew LuizComino, deu certo, era isso que precisava.
Abraço.
Tópico encerrado , respostas não são mais permitidas