DUVIDA CONSULTA SQL

FUTURA 03/07/2015 10:18:58
#448435
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 ?
FFCOUTO 03/07/2015 11:21:04
#448436
Poste a estrutura das tabelas e qual o banco usado.
FUTURA 03/07/2015 11:37:05
#448437
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.
JABA 03/07/2015 12:36:21
#448438
Tente assim pra ver:

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.
FUTURA 03/07/2015 13:48:28
#448440
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;;;;
FFCOUTO 03/07/2015 13:57:46
#448441
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;

FUTURA 03/07/2015 14:06:06
#448442
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
JABA 03/07/2015 14:25:05
#448443
Eu alterei a sql, faça como está lá novamente, por favor.
FUTURA 03/07/2015 14:29:19
#448444
teria que achar uma maneira de limitar a 1 registro por pedido na tabela 2, pois dela preciso apenas do código do vendedor
JABA 03/07/2015 14:34:33
#448445
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;
FUTURA 03/07/2015 14:36:54
#448446
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).
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas