CONSULTA COM JOIN EM 5 TABELAS

POCE1DON 30/07/2015 15:38:33
#449408
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!
ASHKATCHUP 05/08/2015 14:18:12
#449622
Usar o Group By não resolveria o teu problema?

Select codProduto, Sum (Qtde)
From tblVendidos
Group By codProduto
POCE1DON 06/08/2015 02:46:50
#449662
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?
ASHKATCHUP 06/08/2015 11:04:33
#449666
Tu quer contar a quantidades de produtos em qual SQL?

Isso não pode ser feito via programa?
ASHKATCHUP 06/08/2015 11:08:43
#449667
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.
POCE1DON 06/08/2015 20:08:13
#449689
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?
DAMASCENO.CESAR 06/08/2015 21:40:59
#449691
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
Citação:

Isso não pode ser feito via programa?


NOS AJUDE A AJUDÁ-LO
ASHKATCHUP 10/08/2015 18:14:08
#449793
Tu quer a quantidade de produtos diferentes vendidos nesta MESMA query acima?
Tópico encerrado , respostas não são mais permitidas