Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

phfmiranda

INNER JOIN em 4 tabelas distintas

Recommended Posts

Bom dia pessoal,

 

Estou precisando criar um INNER JOIN para 5 tabelas, seria o seguinte:

 

Tabela funcionarios

 

id_funcionario, nome

 

Tabela cliente

 

codigo_cliente, nome

 

Tabela estoque

 

codigo_produto, descricao

 

Tabela itensvenda

 

idVenda, idProduto, quantidade, precoUnitario

 

Tabela Vendas

 

id, idCliente, idVendedor

 

Preciso que quando usar o SELECT * FROM VENDAS seja me apresentado o seguinte:

 

nome do vendedor, nome do cliente, e o nome dos produtos que na tabela itensVenda está o código dos produtos utilizados, mas a tabela que possui os produtos é chamada de estoque.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá! PHFMIRANDA
select fun.nome
,cli.nome
,est.descricao
,
from funcionaerios as fun
inner join vendas as ven
on fun.id_funcionario = ven.idVendedor
inner join cliente as cli
on cli.codigo_cliente = ven.idCliente
inner join itensvenda as itv
on itv.idVenda = ven.id
inner join estoque as est
on est.codigo_produto = itv.idProduto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, todas as tabelas devem conter um campo (ou denominador comum) para que tenha uma relação, senão vc não consegue relacioná-las. Ou tabelas auxiliares que agreguem as IDs, com os produtos respectivos. Ou a sua tabela de vendas deve conter o campo "foreign key" de cada uma dessas tabelas. Daí ficaria algo assim:

SELECT V.id AS id_venda, V.idCliente, V.idVendedor,
       F.id_funcionario, F.nome,
       C.codigo_cliente, C.nome,
       E.codigo_produto, E.descricao,
       I.idVenda,I.idProduto,I.quantidade,I.precoUnitario
 
FROM  Vendas V
      LEFT JOIN funcionarios F
         ON( V.fnc_id_funcionario = F.id_funcionario )
      LEFT JOIN cliente C
         ON( V.fnc_id_funcionario = F.id_funcionario )
      LEFT JOIN itensvenda I
         ON( I.fnc_id_funcionario = F.id_funcionario ) 
      LEFT JOIN estoque E
         ON( E.id_estoque = I.est_id_estoque)
WHERE 1; 


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.