[ONLY EXPERT] DUVIDA CRUEL SOBRE UNIAO TABELA

WEBIER 02/06/2010 18:01:47
#343743
Desejo unir tabelas para exibição dos dados num flexgrid.

Estou com um problema de duplicidade!

possuo uma tabela PRODUTOS onde tenho todos os meus produtos
possuo uma tabela PRODUTOS_ENTRADA_ITENS onde fica todas as entradas no estoque dos meus produtos.

até ai facil...

a ideia seria... toda vez que chegar mercadoria devo lancar no estoque a quantidade, novo preço e etc.

O problema é q se eu der 2, 3, etc entrada no mesmo produto ele me mostra aquelas 2, 3 entradas e na verdade era para ele me mostrar somente a ultima entrada:

ai percebi se eu mudar todos os LEFT JOIN da consulta para RIGHT JOIN ele me mostra conforme eu quero, mas ai os produtos que ainda não tem entrada não aparece no grid....

entao o que quero é ver todos os produtos da tabela PRODUTOS com seu estoque atual certinho e o preço de venda da ultima entrada daquele mesmo produtos e caso o produto não tenha tido nenhuma entrada, ele deve aparecer com a quantidade no estoque e valor zerado... mas deve aparecer na lista.

Postei o projeto ai para facilitar e ainda fiz um exemplo.

eu dei 2 entradas no mesmo produto [Ô]ADITIVO....[Ô] veja que ele aparece no grid do form busca_rapida 2 vezes... sende que esse de valor de 2,99 foi o ultimo que lancei...

obrigado!
LLAIA 02/06/2010 18:16:22
#343744
vc poderia ter uma view onde vc lista a última compra de todo os produtos. depois vc faz uma select na tabela produtos com left join nessa view. creio que vai dá certo.
WEBIER 02/06/2010 18:40:22
#343746
chegou a ver o meu exemplo?

num poderia fazer isso tudo no flexgrid nao? pois possuo mais 2 outras flexgrid da mesma forma no meu projeto e tenho conhecimento zero em view ?
WEBIER 03/06/2010 15:17:02
#343814
Alguem?
LLAIA 04/06/2010 12:26:32
#343883
Cara, estou te enviando o banco de dados com duas consultas. Rode a consulte EXEMPLO e veja se te atende. A consulta ULTIMAS ENTRADAS apenas lista as últimas entradas dos produtos que vc fez a entrada e serve como referncia pra escolher o preco do produto mais atual.

Obs. vc já pensou em criar uma tabela para PRECOS? Lá vc poderia definir precos a vista, parcelado e etc ...

WEBIER 06/06/2010 16:12:58
#344048
nao abriu aqui pq tenho a versao do access 97 e 2000 instalada.

Qual seria a função dessa tabela com preços?
LLAIA 07/06/2010 03:17:43
#344078
Resposta escolhida
tá aí a versão 97

nessa tabela de precos vc pode informar os vários preços do produto de acordo com a forma de pagamento, colocar uma data limite para promoção ... uma série de coisas.

vai depender do negócio do seu cliente. sistemas para supermercados usam muito esses esquemas de data limite, pois o responsável por isso precisa só lançar o plano de preços semanal por exemplo.
WEBIER 07/06/2010 22:38:25
#344202
LLAIA, com sua consulta conseguir a mesma coisa que me codigo usando o RIGHT no lugar do LEFT.

ou seja, usando a minha sql:
[Ô]SELECT tb_prod.COD_BARRA AS var_CodBarra, tb_prod.DESCRICAO AS var_Desc, tb_prod.PRATELEIRA AS var_Prat, tb_prod.CODIGO AS var_Cod, tb_prod.QUANT_ESTOQUE AS var_Quant, tb_prod.UNID_MEDIDA AS var_Med, tb_proEnt_Itens.VENDA AS var_vlrvenda FROM (Produtos AS tb_prod RIGHT JOIN Produtos_Entrada_Itens AS tb_proEnt_Itens ON tb_prod.CODIGO = tb_proEnt_Itens.CODIGO_PRODUTO) RIGHT JOIN [SELECT tb_Prod_Ent_Itens2.CODIGO_PRODUTO, Max(tb_Prod_Ent_Itens2.CODIGO) AS Codigo FROM Produtos_Entrada_Itens AS tb_Prod_Ent_Itens2 GROUP BY tb_Prod_Ent_Itens2.CODIGO_PRODUTO]. AS tb_imaginada ON (tb_proEnt_Itens.CODIGO_PRODUTO = tb_imaginada.CODIGO_PRODUTO) AND (tb_proEnt_Itens.CODIGO = tb_imaginada.Codigo) WHERE tb_prod.ATIVO = TRUE ORDER BY tb_prod.descricao[Ô]


consigo ver somente o ultimo produto inserido sem duplicidade...

então o que quero?

quero ver [Ô]tb[Ô] os produtos que estão [Ô]sem entrada no estoque[Ô] ou seja, que somente está cadastrado na tabela PRODUTOS e ainda não teve nenhuma entrada na tabela PRODUTOS_ENTRADA_ITENS.

resumido:
-se o produto estiver na tabela PRODUTOS e tiver 3 entradas na tabela PRODUTOS_ENTRADA_ITENS, ele deve me mostrar somente a ultima entrada
-se o produto estiver na tabela PRODUTOS mais ainda não tiver nenhum registro referente a ele na tabela PRODUTOS_ENTRADA_ITENS, ele deve mostrar esse produto (DESCRIÇÃO), mas a quantidade no estoque e o preço devem está zerado.
LLAIA 08/06/2010 02:34:36
#344207
bom, mudei a sql da consulta EXEMPLO. crie outra consulta e cole:

[th][/th]
NOVA CONSULTA
SELECT PRODUTOS.CODIGO, PRODUTOS.DESCRICAO, PRODUTOS.PRATELEIRA, PRODUTOS.QUANT_ESTOQUE, IIF(ISNULL(PRODUTOS_ENTRADA_ITENS.VENDA),0 ,PRODUTOS_ENTRADA_ITENS.VENDA) AS VENDA
FROM (PRODUTOS LEFT JOIN ULTIMAS_ENTRADAS ON PRODUTOS.CODIGO = ULTIMAS_ENTRADAS.CODIGO_PRODUTO) LEFT JOIN PRODUTOS_ENTRADA_ITENS ON (ULTIMAS_ENTRADAS.CODIGO_PRODUTO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO) AND (ULTIMAS_ENTRADAS.ULTENTRADA = PRODUTOS_ENTRADA_ITENS.CODIGO_ENTRADA);
WEBIER 08/06/2010 22:19:01
#344302
LLAIA, ficou exatamente o que queria... exatamente...

Obrigado!
Tópico encerrado , respostas não são mais permitidas