Porque nessa Query os dados se repetem?
Olá Boa Tarde. Eu fiz uma query para somar a quantidade de venda dos produtos, mas elas se repetem. Alguém poderia me ajudar e dizer porque isso acontece. Veja:
SELECT DISTINCT V.codigo_produto, P.DESCRICAO,SUM(QUANTIDADE) AS QUANT
FROM PRODUTO P INNER JOIN VENDA_ITEM V ON P.CODIGO = V.CODIGO_PRODUTO
GROUP BY V.codigo_produto, P.DESCRICAO, V.QUANTIDADE ORDER BY V.QUANTIDADE DESC
Itaqui
Curtidas 0
Respostas
Aroldo Zanela
25/01/2008
Colega,
Tente assim:
Tente assim:
SELECT V.codigo_produto, P.DESCRICAO, SUM(QUANTIDADE) AS QUANT FROM PRODUTO P INNER JOIN VENDA_ITEM V ON P.CODIGO = V.CODIGO_PRODUTO GROUP BY V.codigo_produto, P.DESCRICAO ORDER BY V.QUANTIDADE DESC
GOSTEI 0
Itaqui
25/01/2008
Olá. Então, assim eu já tinha tentado fazer, não executa. Tenho que colocar a quantidade dentro do Group By. O problema, parece, está relacionado com a ordenação por quantidade.
Obrigado
Obrigado
GOSTEI 0
Aroldo Zanela
25/01/2008
Colega,
Da forma que eu coloquei vai executar corretamente, mas se você colocar a quantidade no agrupamento (group by), certamente irão ocorrer repetições. Você testou?
Da forma que eu coloquei vai executar corretamente, mas se você colocar a quantidade no agrupamento (group by), certamente irão ocorrer repetições. Você testou?
GOSTEI 0
Itaqui
25/01/2008
Bom Dia. Conforme eu disse, da maneira que vc. colocou aqui não executa. Pede que a quantidade seja colocada na cláusula Group By. Veja o erro :
No final de semana eu testei exaustivamente e percebi que um campo que tenha a cláusula Sum não pode ser ordenada. Só se existir outras maneiras para isso.
Obrigado
Invalid expression in the ORDER BY clause (not contained in either an aggregate function or the GROUP BY clause).
No final de semana eu testei exaustivamente e percebi que um campo que tenha a cláusula Sum não pode ser ordenada. Só se existir outras maneiras para isso.
Obrigado
GOSTEI 0
Aroldo Zanela
25/01/2008
Colega,
Para ordenar por um campo de agregação basta utilizar seu alias. Desculpe-me então, pois no meu primeiro exemplo eu me esqueci disso. Veja um exemplo testado com FB 2.0.
Para ordenar por um campo de agregação basta utilizar seu alias. Desculpe-me então, pois no meu primeiro exemplo eu me esqueci disso. Veja um exemplo testado com FB 2.0.
select v.pro_id codigo, p.pro_descricao descricao, sum(v.veni_quantidade) qtde from vendas_itens v inner join produtos p on (v.pro_id=p.pro_id) group by v.pro_id, p.pro_descricao order by qtde
GOSTEI 0
Itaqui
25/01/2008
Não, se colocar o aliás não executa. Já tentei de todas as formas. Talvez seja a versão do Banco que não permita isso. Aqui tenho o FB versão
1.5.3.4870.
Um abraço
1.5.3.4870.
Um abraço
GOSTEI 0
Aroldo Zanela
25/01/2008
Colega,
É bem estranho isso, pois aqui consigo fazer até com DBFs (xBase) e tenho certeza de ter aplicações com FB 1.5 usando esses recursos.
É bem estranho isso, pois aqui consigo fazer até com DBFs (xBase) e tenho certeza de ter aplicações com FB 1.5 usando esses recursos.
GOSTEI 0
Itaqui
25/01/2008
Boa Tarde, estou ressussitando um tópico de Janeiro deste ano porque ainda não obtive resposta para o meu problema. Se alguém puder me ajudar. Meu banco é o Firebird 1.5
GOSTEI 0
Aroldo Zanela
25/01/2008
Colega,
Comprime o banco de dados e manda para o meu e-mail: zanela_zanela@yahoo.com.br
Comprime o banco de dados e manda para o meu e-mail: zanela_zanela@yahoo.com.br
GOSTEI 0
Emerson Nascimento
25/01/2008
SELECT V.codigo_produto, P.DESCRICAO, SUM(V.QUANTIDADE) AS QUANT FROM VENDA_ITEM V INNER JOIN PRODUTO P ON P.CODIGO = V.CODIGO_PRODUTO GROUP BY V.codigo_produto, P.DESCRICAO ORDER BY 3 DESC
GOSTEI 0
Itaqui
25/01/2008
Boa Tarde. Agora sim, deu certo. Só não entendi a última linha: ´3 DESC´; sei que ela está ordenando em ordem descendente, do maior para o menor. Mas porque da maneira que nós estámos fazendo não dava certo.
Muito obrigado
Muito obrigado
GOSTEI 0
Emerson Nascimento
25/01/2008
o FB 1.5 não aceita o uso do alias do campo na ordenação, então é preciso usar o número do campo (no caso, o terceiro campo).
então, ali está ordenando pelo terceiro campo, em ordem decrescente.
então, ali está ordenando pelo terceiro campo, em ordem decrescente.
GOSTEI 0