Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Select entre várias tabelas (trazer uma lista de resultado, comparando varias tabelas)

Estou tentando resolver alguns exercícios e teve um que eu não consegui resolver.

Estava usando uma vm e não consegui colar as tabelas aqui, mas podem ser vistas no link abaixo :

https://imageshack.com/a/img923/5552/CJ5oIG.jpg

Baseado nestas tabelas, o exercicio pede para listar o nome dos clientes que compraram um determina produto.

Eu tentei várias coisas aqui, mas não consegui trazer o resultado esperado, pois sempre que eu filtro por um produto especifico não retorna nada.

Sendo bem sincero eu não consegui ver a relação entre as tabelas, para que pudesse usar como critério do clausula WHERE.

Em outro exercício que era para trazer o nome do cliente baseado na data da compra eu consegui , com a query abaixo :

select c.nome from Cliente c,Pedido p where p.cod_cliente = c.Codigo and P.data = '15/11/2018';

Poderiam me ajudar explicando como eu poderia ter a lista de nome de clientes que compraram, que compraram um determinado produto, por exemplo o Queijo ?

Agradeço desde já pela ajuda.

@Edit.

A tabela com o nome faltando, se chamada "Pedido_Produto".

3 respostas

Fala Jobson, tudo bem?

Provavelmente está faltando mais tabelas das que você mostrou no print, pois o relacionamento entre CLIENTE e PRODUTO não é informado.

solução!

No print que você mandou eu tenho quatro tabelas, mas eu tenho o nome de 3 (pedido, produto e cliente). Não aparece o nome da primeira tabela (que tem 5 registros). Você vai precisar do nome desta tabela.

Com base nesta estrutura, eu vou dar o nome da tabela que falta de "produto_item". Para retornar o nome dos clientes que compraram queijo, você pode fazer desta forma:

select distinct C.nome
from clientes as C inner join pedido as P on C.codigo = P.cod_cliente
inner join pedido_item as I on P.nf = I.nf 
inner join produto P on P.cod_produto = I.cod_produto 
where P.nome = 'queijo'

Sinto muito. Não notei que estava faltando o nome da tabela,sendo que a com o nome faltando, se chamada "Pedido_Produto".

E Daniel Bins sua resposta resolveu o exercício. Eu nunca teria chegado a esta solução, pois estava tentando resolver de outra forma, sem o inner join. Só não funcionou quando pesquisei para o Sabão em Pó, mas deve ter sido algum erro meu, pois para os outros valores trouxeram os resultados corretos.

Obrigado pela ajuda.