DICA QUERY SQL

FUTURA 17/08/2017 10:15:14
#475824
Pessoal, estou usando a query abaixo para pegar ja totalizando, dados sobre entradas de produtos, esta filtrando certinho, porém preciso pegar também o saldo, de uma terceira tabela, só que esta, separa o saldo por grade, ou seja, ao invés de um registro, pode ter até 6, e ai acaba multiplicando o valor por 6, mesmo usando group by ou distinct. Teria como fazer, ou seria necessário uma segunda etapa ?

sql = [Ô]select A.codigo,A.descricao,sum(B.qtde) as qtcompra, sum(b.qtde * B.valor) as vlcompra from produtos A, entradas B [Ô]
sql = sql & [Ô] where B.data BETWEEN [Ô] & FormataData(dt1.value, dbtype) & [Ô] AND [Ô] & FormataData(dt2.value, dbtype) & [Ô] [Ô]
sql = sql & [Ô] and B.tipo = [ô]E[ô] [Ô]
sql = sql & [Ô] and A.codigo = B.produto[Ô]
KERPLUNK 17/08/2017 10:34:42
#475826
Bem, se você não quer mudar drasticamente, você pode usar uma sub-query para essa nova tabela, trazendo dela já somado/agrupado.
FUTURA 17/08/2017 10:40:45
#475827
uma sub junto com essa query que postei ?, no caso agrupando tbm, ai ficaria linkado com o item ?, seria uma boa idéia, nunca fiz assim, vou ver se consigo aqui...
PATRIQUE 17/08/2017 17:40:12
#475843
Boa tarde,

Algo assim imagino que funcione:

  sql = [Ô]select A.codigo,A.descricao,sum(B.qtde) as qtcompra, sum(b.qtde * B.valor) as vlcompra from produtos A, entradas B, (Select Max(C.tsaldo) From SALDO C Where C.produto = A.codigo) as SaldoProduto [Ô]
sql = sql & [Ô] where B.data BETWEEN [Ô] & FormataData(dt1.value, dbtype) & [Ô] AND [Ô] & FormataData(dt2.value, dbtype) & [Ô] [Ô]
sql = sql & [Ô] and B.tipo = [ô]E[ô] [Ô]
sql = sql & [Ô] and A.codigo = B.produto[Ô]
PATRIQUE 17/08/2017 17:42:10
#475844
Resposta escolhida
Desculpa, reformulando...

  sql = [Ô]select A.codigo,A.descricao,sum(B.qtde) as qtcompra, sum(b.qtde * B.valor) as vlcompra, (Select Max(C.tsaldo) From SALDO C Where C.produto = A.codigo) as SaldoProduto from produtos A, entradas B [Ô]
sql = sql & [Ô] where B.data BETWEEN [Ô] & FormataData(dt1.value, dbtype) & [Ô] AND [Ô] & FormataData(dt2.value, dbtype) & [Ô] [Ô]
sql = sql & [Ô] and B.tipo = [ô]E[ô] [Ô]
sql = sql & [Ô] and A.codigo = B.produto[Ô]
FUTURA 17/08/2017 18:55:12
#475847
Eu havia feito um pouco diferente, mas ficou melhor que a encomenda...
Muito obrigado.
Tópico encerrado , respostas não são mais permitidas