Página 1 de 1

Comando SQl;

MensagemEnviado: 24 Out 2010 20:00
por HC908
tenho duas tabelas produto e venda

estrutura da tabela venda.

idvenda
produto_idProduto

estrutura da tabela produto
idProduto
nome

gostaria de saber qual foram os produtos q não entraram para venda. ja tentei varias forma de SQL e não estou conseguindo

Re: Comando SQl;

MensagemEnviado: 25 Out 2010 08:07
por andre_luis
Não entendi a relação de campos, mas suponho que seja assim :

Venda
Código: Selecionar todos
idvenda
produto
idProduto


Produto
Código: Selecionar todos
idProduto
nome


É necessário que ao menos um dos campos seja igual. Por isso o questionamento.
Eu faria assim:
Código: Selecionar todos
select
TBL_Produto.idProduto
TBL_Produto.nome
from Produto TBL_Produto
inner join Venda TBL_Venda on TBL_Produto.idProduto = TBL_Venda.idProduto
where TBL_Venda.idvenda IS NULL



+++

MensagemEnviado: 25 Out 2010 16:22
por ivan
André,
O campo produto_idproduto na Tabela Venda é uma chave estrangeira da tabela produto em venda.


NC908,

Se a tabela de Venda lista os produtos vendidos, para listar os produtos que não foram vendidos, uma solução é usar a cláusula "NOT IN SELECT".

Ficaria algo assim:

SELECT idproduto,nome from Produto where Produto.IDProduto NOT IN (SELECT DISTINCT Venda.idproduto from venda)

Não é uma consulta otimizada para o desempenho mas pela natureza da consulta, listar os q não foram vendidos, ela não será executada constantemente.

Espero q eu tenha entendido corretamente a dúvida.

MensagemEnviado: 26 Out 2010 10:14
por HC908
valeuuuuuuuuuuuu pessoal. deu certo. AS TABELAS NO MUNDO REAL NÂO SÃO ESTA. REALEMNET NÃO TEM MUITO LOGICA ESTE RELACIONAMENTO. + VC TESTEI AQUI E DEU CERTO> MT OBG.