[firebase-br] Duvida Com Joins

Eduardo Jedliczka edujed em gmail.com
Seg Maio 2 19:48:43 -03 2005


Beleza... entendi... Mas eu acredito que certas coisas devam ser tratadas /
filtradas pela aplicação para "poupar" o banco de dados.

Se este tipo de select for muito comum, e suas tabelas forem muito grandes,
vale a pena construir uma SP com selects em 3 niveis, assim a performance
seria um pouco melhor. Outra alternativa é criar índices específicos que
atenda consultas como esta. Mas isto já  é outra história...

[s]

======================
Eduardo Jedliczka
Apucarana - Paraná
======================
----- Original Message -----
From: "evandrobastiani2" <evandrobastiani2 em ig.com.br>
To: <lista em firebase.com.br>
Sent: Monday, May 02, 2005 7:32 PM
Subject: Re: [firebase-br] Duvida Com Joins


> 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 ?
> >
> >
>


----------------------------------------------------------------------------
----


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas:
http://search.gmane.org/search.php?group=firebase





Mais detalhes sobre a lista de discussão lista