Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
grsoft Aprendiz
Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Qua Mai 26, 2021 11:54 am Assunto: duvida SQL (mysql) |
|
|
bom dia pessoal, estou com uma dúvida numa SQL e gostaria de saber se é possível, seguinte:
tenho um cadastro de produtos da seguinte forma
Código: | COD NOME PRECO TIPO
1 COCA-COLA 5 P
2 VINHO TINTO 0 P
3 SUAVE 10 C
4 SECO 15 C |
o TIPO=P significa que é um produto e o C significa que é um complemento e o complemento só pode ser atrelado a um produto como na tabela abaixo:
itens
Código: | COD CODPROD QUANT TOTAL
1 1 1 5
2 1 2 10
3 2 1 0
4 2 1 0
5 2 1 0 |
subitens
Código: | COD CODITEM CODPROD QUANT TOTAL
1 3 3 1 10
2 4 3 1 10
3 5 4 1 15 |
a minha dúvida é a seguinte: gostaria de uma SQL que agrupasse todos os produtos que são exatamente iguais e somasse suas quantidades e valores da forma abaixo
Código: | NOME QUANT TOTAL
COCA-COLA 3 15
VINHO TINTO 2 20 (esse seria com os complementos SUAVE)
VINHO TINTO 1 15 (esses seria com o complemento SECO) |
|
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9098 Localização: Sinop-MT
|
Enviada: Qua Mai 26, 2021 3:01 pm Assunto: |
|
|
tenta isto:
Código: | SELECT p.codigo,
p.descricao,
c.descricao,
SUM(i.qtde),
SUM(i.total)
FROM itens i
LEFT JOIN produtos p ON p.codigo = i.codprod
LEFT JOIN subitens s ON s.coditem = i.codigo
LEFT JOIN produtos c ON c.codigo = s.codprod
GROUP BY p.codigo,
p.descricao,
c.descricao |
_________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Mai 26, 2021 3:24 pm Assunto: |
|
|
Boa tarde,
Não sei se entendi corretamente mas segue uma sugestão para testes:
Código: | select
p.Nome,
sum(i.Quant) as Quant,
sum(i.Total + coalesce(s.Total, 0)) as Total
from Itens as i
inner join Produtos as p
on p.Cod = i.CodProd
left join SubItens as s
on s.CodItem = i.Cod
group by
p.Nome,
i.CodProd,
s.CodProd |
Espero que ajude
Editado pela última vez por imex em Dom Out 01, 2023 5:42 pm, num total de 2 vezes |
|
Voltar ao Topo |
|
|
grsoft Aprendiz
Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Qua Mai 26, 2021 6:33 pm Assunto: |
|
|
não dá certo pq como tem produto (vinho tinto) com subitens diferentes, ele não pode somar todos os 3, só pode somar se o item e o subitem forem exatamente iguais.
imex escreveu: | Boa tarde,
Não sei se entendi corretamente mas segue uma sugestão para testes:
Código: | select
p.Nome,
sum(i.Quant) as Quant,
sum(i.Total + coalesce(s.Total, 0)) as Total
from Itens as i
inner join Produtos as p
on p.Cod = i.CodProd
left join SubItens as s
on s.CodItem = i.Cod
group by
p.Nome,
i.CodProd,
s.CodProd |
Espero que ajude
|
|
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Mai 28, 2021 10:55 am Assunto: |
|
|
Fiz um teste rápido por aqui e obtive o resultado igual ao que você postou, com 2 registros separados para o vinho tinto.
O campo s.CodProd foi adicionado no Group By para que os subitens diferentes não sejam agrupados. |
|
Voltar ao Topo |
|
|
|