[firebase-br] Itens não vendidos

Bruno Dias brunodila em gmail.com
Sáb Jul 24 18:53:26 -03 2010


Olá Felix,

Você pode fazer um left join e filtrar todos onde a quantidade seja maior
que zero.

select a.codigoPro, a.descricao, b.quantidade as Estoque from Produto
left join Vendas on(a.codigoPro = b.codigoPro)
where (b.quantidade > 0) or (b.quantidade is not null)

O LEFT JOIN irá retornar todos os registros da tabela Produto independente
de haver ou não registros na tabela Vendas, quando não houver valor
correspondente na tabela Vendas o campo quantidade será mostrado como NULL.

Espero ter ajudado.

Bruno Lage.
lagix.blogspot.com

Em 24 de julho de 2010 18:30, Felix - Sol <felix.sol em terra.com.br> escreveu:

> Já passou coisa parecida por aqui, dei uma pesquisada mas não cheguei a uma
> conclusão:
>
> Tabela Produto : CodigoPro, Descricao
> Tabela Vendas  : CodigoPro, Quantidade, Data
>
> Preciso dos Produtos NÃO vendidos:
>
> Select CodigoPro, Descricao, Quantidade as Estoque from Produto P where
>  not exists (select first 1 null from Vendas V where V.Data between
> '01/01/2010' and '01/07/2010' and V.CodigoPro = P.CodigoPro )
>
> Funciona, mas demora 5 minutos. Não tem índice na tabela Vendas para Data /
> CodigoPro.
>
> Pelo que entendi, o comando acima gera 1 consulta para cada produto.
>
> Por outro lado:
>
> select Codigopro from Vendas V where V.Data between '01/01/2010' and
> '01/07/2010' group by codigopro
>
> Executa em 1 segundo.
>
> Bastaria então retornar quem existe na tabela Produto que não consta na 2a
> query. Tem como fazer direto em SQL ou não?
>
>
> Fco. Felix
> Desenvolvimento de Sistemas
> www.soltecnologia.com.br
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista