CONSULTA COM JOIN EM 5 TABELAS
Bom, novamente depois de 1 semana que estou lutando em busca da solução e não encontro, venho pedir ajuda à essa galera que sempre da a maior força pra gente, e claro que da última vez que precisei não posso deixar de citar o FFCOUTO que criou a solução e o JABA que me ajudou com a elaboração de uma outra query.
Atualmente os cálculos estão sendo realizados, mas o que preciso é optimizar seu funcionamento, já que a consulta dos valores não está muito legal e com certeza vai piorar com o passar dos meses porque o fluxo de registros está aumentando a cada mês.
Dessa fez a query ficou mais complexa pra mim. Então é um seguinte:
tblProdutos
tblLotes
tblVendas
tblVendidos
tblPagamentos
No sistema há o gerenciador dos [Ô]lotes dos leilões[Ô], então o usuário realiza a listagem desses lotes buscando por seu código de cadastro ou informando os dados do campo [Ô]Origem[Ô] da tblLotes.
Essa é a forma como os dados são exibidos:
Meu problema está em separar os produtos distintos vendidos, ou seja, não considerar os repetidos que estão em tblVendidos, mas depois realizar a soma dos Ãtens vendidos levando em consideração os repetidos, e fazer o SELECT do valor total recebido de tblPagamentos com base no código de cadastro da tblVendas.
Basicamente seria:
buscar produtos pertencentes ao lote, encontrar os vendidos com base no código da venda, realizar a soma de todos, aplicar desconto no total quando houver na venda, fazer a separação dos não repetidos, somar todos os pagamentos já realizados conforme os códigos das vendas.
Para ficar mais fácil entender a consulta, hospedei o BD Access nesse endereço http://s000.tinyupload.com/index.php?file_id=81981997683653479804
e talvez assim seja mais fácil vc me dar essa força.
Obrigado!
Atualmente os cálculos estão sendo realizados, mas o que preciso é optimizar seu funcionamento, já que a consulta dos valores não está muito legal e com certeza vai piorar com o passar dos meses porque o fluxo de registros está aumentando a cada mês.
Dessa fez a query ficou mais complexa pra mim. Então é um seguinte:
tblProdutos
tblLotes
tblVendas
tblVendidos
tblPagamentos
No sistema há o gerenciador dos [Ô]lotes dos leilões[Ô], então o usuário realiza a listagem desses lotes buscando por seu código de cadastro ou informando os dados do campo [Ô]Origem[Ô] da tblLotes.
Essa é a forma como os dados são exibidos:
Meu problema está em separar os produtos distintos vendidos, ou seja, não considerar os repetidos que estão em tblVendidos, mas depois realizar a soma dos Ãtens vendidos levando em consideração os repetidos, e fazer o SELECT do valor total recebido de tblPagamentos com base no código de cadastro da tblVendas.
Basicamente seria:
buscar produtos pertencentes ao lote, encontrar os vendidos com base no código da venda, realizar a soma de todos, aplicar desconto no total quando houver na venda, fazer a separação dos não repetidos, somar todos os pagamentos já realizados conforme os códigos das vendas.
Para ficar mais fácil entender a consulta, hospedei o BD Access nesse endereço http://s000.tinyupload.com/index.php?file_id=81981997683653479804
e talvez assim seja mais fácil vc me dar essa força.
Obrigado!
Usar o Group By não resolveria o teu problema?
Select codProduto, Sum (Qtde)
From tblVendidos
Group By codProduto
Citação::
Usar o Group By não resolveria o teu problema?Select codProduto, Sum (Qtde)
From tblVendidos
Group By codProduto
Resolveria, sim ASHKATCHUP
mas a questão é realizar os [Ô]joins[Ô] das tabelas para obter os resultados:
no caso para obter a quantidade e valor vendido está bem fácil com dessa query:
SELECT
LT.codCadastro,
LT.Origem,
SUM(VI.Qtde),
SUM(VI.valVenda * VI.Qtde) AS TotalVendido
FROM (((
tblLotes LT INNER JOIN tblProdutos PR
ON PR.codLote = LT.codCadastro)
INNER JOIN tblVendidos VI
ON VI.codProduto = PR.codCadastro)
INNER JOIN tblVendas VE
ON VE.codCadastro = VI.codVenda)
GROUP BY
LT.codCadastro,
LT.Origem
mas o primeiro problema é para obter a quantidade de produtos distintos? ... ou seja, não fazer a contagem dos códigos repetidos ... como se fosse um SELECT DISTINCT
daà depois é realizar o JOIN em tblPagamentos para realizar o SUM com base no VI.codVenda ou VE.codCadastro
Alguma solução?
Tu quer contar a quantidades de produtos em qual SQL?
Isso não pode ser feito via programa?
Isso não pode ser feito via programa?
Tenta explicar detalhadamente o que cada tabela e cada campo guarda. Depois, explica que tipo de dado tu precisa retornar na consulta.
Assim poderei te ajudar na SQL.
Assim poderei te ajudar na SQL.
Citação::
Tu quer contar a quantidades de produtos em qual SQL?
Isso não pode ser feito via programa?
como assim em qual SQL? via programa?
não te entendi?
estou tentando montar a query SQL para usar no meu programa
Citação::
Tenta explicar detalhadamente o que cada tabela e cada campo guarda. Depois, explica que tipo de dado tu precisa retornar na consulta.
Assim poderei te ajudar na SQL.
Veja os screenshot que coloquei no tópico, e também o banco de dados que hospedei em http://s000.tinyupload.com/index.php?file_id=81981997683653479804 talvez já adiante um pouco mais do que eu preciso.
no segundo screenshot, está a forma como deve funcionar o sistema, a contagem dos produtos (apenas nesse cálculo/soma deve ser códigos [Ô]distintos[Ô]), quantidade total de Ãtens, valor total vendido e valor total recebido.
como expliquei, atualmente a forma como funciona não está eficiente, preciso optimizar e por isso peço a ajuda de vocês.
Será que entendeu?
POCE1DON, baixei seu bd e tá uma loucura pra entender como juntar essas tbs, ainda mais quando temos tão poucas informações de como é seu raciocinio para relacionar os dados dessas tbs em uma só consulta. monte um fluxograma ou escreva em portugues mesmo, quais os campos de quais tabelas você quer pegar e o que fazer com cada campo (agrupar, somar, contar, exibir, etc...) pra podermos te ajudar melhor.
1º:- Pelo jeito, na TblPagamentos o campo Situacao mostra se foi recebido ou não, não qual foi o recebido.
2º:- no seu segundo screenshot, o campo prod, não sabemos o que ele mostra. Quantidade de vendas? ou o que?
3º:- o campo Cod tem o numero 187, de onde vem esse numero?
Pra resolver seu problema voce vai ter que fazer uma query dentro de outra query(rsrs), há algum tempo já tive um problema parecido, tentei de várias formas mas não resolvi em uma só instrução SQL (Falta de conhecimento, ou burrice rsrs), minha gambiarra foi criar uma tb com os campos que queria e ir alimentando ela com várias consultas em separado.
Acho que foi isso que nosso amigo ASHKATCHUP quis dizer quando falou
NOS AJUDE A AJUDÃ-LO
1º:- Pelo jeito, na TblPagamentos o campo Situacao mostra se foi recebido ou não, não qual foi o recebido.
2º:- no seu segundo screenshot, o campo prod, não sabemos o que ele mostra. Quantidade de vendas? ou o que?
3º:- o campo Cod tem o numero 187, de onde vem esse numero?
Pra resolver seu problema voce vai ter que fazer uma query dentro de outra query(rsrs), há algum tempo já tive um problema parecido, tentei de várias formas mas não resolvi em uma só instrução SQL (Falta de conhecimento, ou burrice rsrs), minha gambiarra foi criar uma tb com os campos que queria e ir alimentando ela com várias consultas em separado.
Acho que foi isso que nosso amigo ASHKATCHUP quis dizer quando falou
Citação:Isso não pode ser feito via programa?
NOS AJUDE A AJUDÃ-LO
Tu quer a quantidade de produtos diferentes vendidos nesta MESMA query acima?
Tópico encerrado , respostas não são mais permitidas