[firebase-br] Duvida Com Joins

evandrobastiani2 evandrobastiani2 em ig.com.br
Seg Maio 2 19:32:37 -03 2005


Valeu.... pelos testes que fiz aqui era exatamente isso que eu precisava.. 

Sobre o porque de eu não usar o código... é que na verdade não é pela Razao 
que vou filtrar.... tem uns 5 campos da tabela de Fornecedores que vou 
precisar filtrar.... coloquei a razão pra ficar mais entendivel........ 

Valeu mesmo Eduardo.... 




Você quer apenas produtos de uma determinada transportadora ???? 

Bom, vamos lá... 

SELECT P.Produto, sum (V.QUANT*V.VUNIT) 
FROM Produtos P 
LEFT OUTER JOIN ItensVendidos V 
 ON P.Codigo = V.CPRO and V.Data = '03/05/2005' 
  and Exists ( Select First 1 1 From Transportadoras T Where T.Codigo = 
V.CTRA and T.Razao = 'TRANSPORTE') 
 Group by 1 ORDER BY 1 

agora ao invés da Razão Social, porque não filtra pelo Código ???? 

[s] 

========================== 
Eduardo Jedliczka 
Gerasoft Informática 
Apucarana - Pr 
========================== 

----- Original Message ----- 
From: "evandrobastiani2" <evandrobastiani2 em ig.com.br> 
To: <lista em firebase.com.br> 
Sent: Monday, May 02, 2005 4:55 PM 
Subject: Re: [firebase-br] Duvida Com Joins 


> Vou tentar me explicar melhor...... 
> 
> Tabelas Usadas....  Produtos, ItensVendidos 
> 
> 1º Preciso exibir todos os produtos e o total de sua vendas.... 
> Solução............. 
> SELECT P.Produto, sum (V.QUANT*V.VUNIT) 
> FROM Produtos P 
> LEFT OUTER JOIN ItensVendidos V 
> ON P.Codigo = V.CPRO 
> Group by 1 ORDER BY 1 
> 
> 2º Exibir exibir todos os produtos e o total de sua vendas com um filtro 
de 
> data nas Vendas 
> Solução............. 
> SELECT P.Produto, sum (V.QUANT*V.VUNIT) 
> FROM Produtos P 
> LEFT OUTER JOIN ItensVendidos V 
> ON P.Codigo = V.CPRO and V.Data = '03/05/2005' 
> Group by 1 ORDER BY 1 
> 
> 
> agora esse terçeiro caso não consigo resolver.... 
> 
> Tabelas usadas..... Produtos --->ItensVendidos--->Transportadora.... 
> obs: o Tabela de transportadora está relacionada com ItensVendidos.... 
> 
> 3º Exibir exibir todos os produtos e o total de sua vendas com um filtro 
de 
> data nas Vendas e filtrar pela Razão da Transportadora da tabela de 
> Transportadoras.......Naum consigo.... 
> ..... 
> 
> Se eu fizer dessa maneira... naum está fucionando... 
> 
> SELECT P.Produto, sum (V.QUANT*V.VUNIT) 
> FROM Produtos P 
> LEFT OUTER JOIN ItensVendidos V 
> ON P.Codigo = V.CPRO and V.Data = '03/05/2005' 
> LEFT OUTER JOIN Transportadoras T     <<<<<--------------- 
> ON T.Codigo = V.CTRA and T.Razao = 'TRANSPORTE' 
> Group by 1 ORDER BY 1 
> 
> Acho que consegui ser bem claro...... 
> Abraços...... 
> 
> 
> 
> 
> <b>ED</b> 
> 
> Não vejo problemas !!! 
> 
> O join ou left join é a mesma coisa... 
> 
> select * 
> from tabela A 
> left join tabela B on (a.campo = b.campo) and (b.data between :data1 and 
> data2) 
> left join tabela C on (b.campo =c.campo) 
> .... 
> 
> 
> ----- Original Message ----- From: "evandrobastiani2" 
> <evandrobastiani2 em ig.com.br> 
> To: <lista em firebase.com.br> 
> Sent: Monday, May 02, 2005 3:54 PM 
> Subject: Re: [firebase-br] Duvida Com Joins 
> 
> 
> Deu um erro no Segundo SubSelect..... quando vc comparou a tabela V.... 
> (V.Codigo = D.CIten).... V.Codigo não existe..... 
> pq ele só foi apontado no Primeiro SuBelect.. 
> 
> Como resolve isso ? 
> Mais acho que estamos no caminho certo.... Valeu Amigo.. 
> 
> 
> 
> ---------------------------------------------------------------- Bom, aí a 
> história é outra... 
> 
> Como você precisa de dados divergentes, a solução seria realizar o SUM 
> dentro de um Sub-select. 
> 
> SELECT P.Produto, 
> (Select sum(V.QUANT*V.VUNIT) from Itens V where P.Codigo = V.CPRO and 
V.Data 
> ='01/04/2005' ) as Total_Itens, 
> (Select sum(D.pagamentos) from Duplicatas D where V.Codigo = D.CIten and 
> D.Pagamento is null) as valor_pagar 
> FROM Produtos P 
> ORDER BY P.Produto 
> 
> [s] 
> 
> ========================== 
> Eduardo Jedliczka 
> Gerasoft Informática 
> Apucarana - Pr 
> ========================== 
> 
> ----- Original Message ----- From: "evandrobastiani2" 
> <evandrobastiani2 em ig.com.br> 
> To: <lista em firebase.com.br> 
> Sent: Monday, May 02, 2005 2:21 PM 
> Subject: [firebase-br] Duvida Com Joins 
> 
> 
> 
> A duvida Abaixo resolvi da seguinte forma.. segundo um amigo da Lista 
> 
> SELECT P.Produto, sum (V.QUANT*V.VUNIT) 
> FROM Produtos P 
> LEFT OUTER JOIN Itens V 
> ON P.Codigo = V.CPRO and V.Data ='01/04/2005' 
> Group by 1 ORDER BY 1 
> 
> Sql Acima funciona perfeitamente.... 
> mais e se alem disso.... quiser verificar na Tabela de "DUPLICATAS" se a 
> parcela já foi paga ?????   Ai ferra tudo... fiz da maneira abaixo e naum 
> consegui resolver, pois o valor não muda nada..... ....Espero que em 
> ajudem.. Abraços 
> 
> 
> SELECT P.Produto, sum (V.QUANT*V.VUNIT) 
> FROM Produtos P 
> LEFT OUTER JOIN Itens V 
> ON P.Codigo = V.CPRO and V.Data ='01/04/2005' 
> LEFT OUTER JOIN Duplicatas D                    <<<<<<<<<<<<<<< 
> ON V.Codigo = D.CIten and D.Pagamento is null 
> Group by 1 ORDER BY 1 
> 
> 
> 
> 
> abaixo está a Duvida anterior resolvida por um Amigo da Lista 
> ----------------------------------------------------------------- 
> 
> 24/04/2005 
> 
> To com uma duvida em uma consulta.....pra vcs devem ser moleza 
> 
> ´Tenho a tabela de produtos com 10 produtos cadastrados..... 
> e uma tabela de Itens Vendidos........ 
> tenho que listar todos os itens da tabela de produtos e mostrar a soma da 
> venda na tabela de Vendas..... até ai tudo bem...uso essa SQL é da certo 
> 
> SELECT P.Produto, sum (V.QUANT*V.VUNIT) 
> FROM Produtos P 
> LEFT OUTER JOIN Itens V 
> ON P.Codigo = V.CPRO 
> Group by 1 ORDER BY 1 
> 
> 
> O problema se dá quando eu tento filtrar por data da venda.....faço 
> 
> assim... 
> 
> SELECT P.Produto, sum (V.QUANT*V.VUNIT) 
> FROM Produtos P 
> LEFT OUTER JOIN Itens V 
> ON P.Codigo = V.CPRO 
> where V.Data ='01/04/2005'   //<<<<<<<<<<<<<<<<<<<<<<<<< 
> Group by 1 ORDER BY 1 
> 
> Ai não mostra mais os 10 produtos.... só mostra os que tiverem vendas no 
> 
> Dia 
>     especificado..... 
> alguem pode me ajudar ? 
> 
> 


Mais detalhes sobre a lista de discussão lista