DUVIDA CONSULTA SQL
pessoal, preciso somar um campo em uma consulta, porém preciso relacionar duas tabelas, uma tenho as parcelas e outras os itens onde relaciono pelo numero do pedido, preciso somar o campo valor da tabela parcelas, mas a soma não esta dando certo, porque a tabela itens tem [Ô]N[Ô] produtos. Já tentei por group, distinct..alguma dica ?
Poste a estrutura das tabelas e qual o banco usado.
sql server
tabela1 tabela2
pedido pedido
valor produto
vendedor
preciso somar campo valor separando por vendedor, porém se na tabela 2 tiver mais de 1 item por pedido, esta repetindo e alterando a soma. Sei que a lógica parece errada, sendo que o campo vendedor deveria constar na tabela 1, mas no mesmo pedido pode ter vendedores diferentes.
tabela1 tabela2
pedido pedido
valor produto
vendedor
preciso somar campo valor separando por vendedor, porém se na tabela 2 tiver mais de 1 item por pedido, esta repetindo e alterando a soma. Sei que a lógica parece errada, sendo que o campo vendedor deveria constar na tabela 1, mas no mesmo pedido pode ter vendedores diferentes.
Tente assim pra ver:
O certo mesmo era você criar uma tabela à parte para a associação de vendedor e pedido, pois isso evitaria a desnormalização da sua tabela.
SELECT sum(distinct tabela1.valor) as valor
FROM tabela1
inner join tabela2
ON tabela1.pedido=tabela2.pedido;
O certo mesmo era você criar uma tabela à parte para a associação de vendedor e pedido, pois isso evitaria a desnormalização da sua tabela.
pois é..usando left não da também, ja havia testado, o fato é que como na tabela de itens ( tabela 2) , existem mais registros associados a 1 único registro da tabela 1, acaba repetindo o campo da soma, tanta vezes a qtde de registros da tabela 2. é uma coisa boba, mas achei que com o poder sa sql daria pra fazer algo, sem ter q fazer um loop por ex;;;;
Será necessário agrupar por vendedor.
SELECT t2.Vendedor, SUM(t1.valor) AS valor
FROM tabela1 AS t1
INNER JOIN tabela2 AS t2 ON t1.pedido = t2.pedido
GROUP BY t2.Vendedor;
FFcouto, acho que tbm não da, pois mesmo agrupando por vendedor, a qtde de registro continua mesma, e vai alterar a soma do campo valor da tabela 1
Eu alterei a sql, faça como está lá novamente, por favor.
teria que achar uma maneira de limitar a 1 registro por pedido na tabela 2, pois dela preciso apenas do código do vendedor
Ao invés de se basear somente no valor, como coloquei no primeiro exemplo, tente se basear no indice do pedido:
SELECT distinct tabela1.pedido, sum(distinct tabela1.valor) as valor
FROM tabela1
inner join tabela2
ON tabela1.pedido=tabela2.pedido;
jaba, vou detalhar melhor, tenho a tabela carteira com valor da parcela e tabela itens_venda com os itens da venda e vendedores, preciso somar o campo valor da tabela carteira linkando ela a itens_venda onde tenho código do vendedor, porém itens da venda pode ter N registros e ai esta alterando o valor da soma, exemplo>
tabela vendas:
nro_pedido,valor
tabela itens:
nro_pedido, vendedor
nro_pedido, vendedor
nro_pedido, vendedor
neste link, somando o campo valor, ele triplica, por ter 3 registros na tabela de itens. e como passei acima, o vendedor fica nesta tabela, pois ocorre mesmo de na mesma venda ter mais de um vendedor ( deptos diferentes).
tabela vendas:
nro_pedido,valor
tabela itens:
nro_pedido, vendedor
nro_pedido, vendedor
nro_pedido, vendedor
neste link, somando o campo valor, ele triplica, por ter 3 registros na tabela de itens. e como passei acima, o vendedor fica nesta tabela, pois ocorre mesmo de na mesma venda ter mais de um vendedor ( deptos diferentes).
Tópico encerrado , respostas não são mais permitidas