Campo acumulador, utilizando a função SUM() - Mysql
Boa tarde,
Preciso de uma ajuda em um script em SQL, tenho duas tabelas ('venda', 'produto') onde faço um select ... nele listo a descricao do produto, a contagem dos prd vendidos(sendo 1 prd para 1 venda), e o valor vendido de cada produto (qtd de prd * preço) ...
ficou assim o script:
SELECT descProduto, COUNT(vd.codProduto) as totPrd, (COUNT(vd.codProduto)*prd.preco) as ValorTotal
FROM `venda` as vd
JOIN produto as prd ON vd.codProduto = prd.codProduto
WHERE vd.status = '1'
GROUP BY vd.codProduto
Porém preciso extrair mais uma informação deste script, seria um acumulador do vlr vendido de cd produto ... tentei colocar 'SUM(ValorTotal)' mas retornou o erro:
#1054 - Unknown column 'ValorTotal' in 'field list'
e pelo que li na web, não é possivel utilizar um ALIAS na soma ... então tentei o seguinte:
SUM(COUNT(vd.codProduto)*prd.preco)
mas retornou este erro:
#1111 - Invalid use of group function
ja este erro eu nao consegui identificar o motivo ... :/
Podem me ajudar? please!!
OBS: Nesta linha estou filtrando somente os pedidos concluidos, no caso com status 1 .. nao sei se isso tem relação com o ultimo erro #1111
WHERE vd.status = '1'
Grato,
Henrique
Preciso de uma ajuda em um script em SQL, tenho duas tabelas ('venda', 'produto') onde faço um select ... nele listo a descricao do produto, a contagem dos prd vendidos(sendo 1 prd para 1 venda), e o valor vendido de cada produto (qtd de prd * preço) ...
ficou assim o script:
SELECT descProduto, COUNT(vd.codProduto) as totPrd, (COUNT(vd.codProduto)*prd.preco) as ValorTotal
FROM `venda` as vd
JOIN produto as prd ON vd.codProduto = prd.codProduto
WHERE vd.status = '1'
GROUP BY vd.codProduto
Porém preciso extrair mais uma informação deste script, seria um acumulador do vlr vendido de cd produto ... tentei colocar 'SUM(ValorTotal)' mas retornou o erro:
#1054 - Unknown column 'ValorTotal' in 'field list'
e pelo que li na web, não é possivel utilizar um ALIAS na soma ... então tentei o seguinte:
SUM(COUNT(vd.codProduto)*prd.preco)
mas retornou este erro:
#1111 - Invalid use of group function
ja este erro eu nao consegui identificar o motivo ... :/
Podem me ajudar? please!!
OBS: Nesta linha estou filtrando somente os pedidos concluidos, no caso com status 1 .. nao sei se isso tem relação com o ultimo erro #1111
WHERE vd.status = '1'
Grato,
Henrique
comentários (0)
suspender
Lista de Respostas:
18/10/2012 2:52pm
(~12 anos atrás)
(~12 anos atrás)
O que vc quer é um tanto incoerente.
Se COUNT(vd.codProduto)*prd.preco está lhe informando o valor correto, não há porque usar SUM() a menos que existam valores diferentes em prd.preco o que faria com que o COUNT()*valor esteja errado.
SE o que quer é o totalizador das linhas exibidas, você tem duas opções.
Usar a função ROLLUP ou ir acumulando na hora de exibir pelo PHP e exibir o valor acumulado.
O ROLLUP basta usar
SELECT .... GROUP BY coluna WITH ROLLUP
o totalizador basta usar uma variável.
Se COUNT(vd.codProduto)*prd.preco está lhe informando o valor correto, não há porque usar SUM() a menos que existam valores diferentes em prd.preco o que faria com que o COUNT()*valor esteja errado.
SE o que quer é o totalizador das linhas exibidas, você tem duas opções.
Usar a função ROLLUP ou ir acumulando na hora de exibir pelo PHP e exibir o valor acumulado.
O ROLLUP basta usar
SELECT .... GROUP BY coluna WITH ROLLUP
o totalizador basta usar uma variável.
18/10/2012 3:47pm
(~12 anos atrás)
(~12 anos atrás)
Obrigado Marcos,
viajei msm aqui ... rs
Fiz direto no php este acumulador q precisava.
Caso resolvido,
Grato
viajei msm aqui ... rs
Fiz direto no php este acumulador q precisava.
Caso resolvido,
Grato