Usuário com melhor resposta
Fazer INNER JOIN com 3 tabelas

Pergunta
-
Pessoal
Estou tentando fazer um inner join com 3 tabelas, mas estou com um produto cartesiano.
Tenho uma tabela de vendas aonde possuo informações dos clientes que efetuaram alguma compra e quais os produtos.
As outras duas tabelas referem-se: uma de clientes com cod de clientes e outra de produtos com os cod de produtos e demais informações inerentes. Na tabela de vendas possuo os cod de clientes e produtos.
grato,
Respostas
-
Pelo que li e entendi , vc tem um problema na normalização da sua tabela, eu não vi 3 tabelas no seu texto e sim 4 tabelas. vc talvez esteja sofrendo por falta de uma tabela no seu modelo, vou dar uma explicação:
Estou tentando fazer um inner join com 3 tabelas, mas estou com um produto cartesiano(Esse é o problema)
Tenho uma tabela de vendas aonde possuo informações dos clientes
aqui temos duas tabelas , uma de Vendas e outra de Cliente, seque um exemplo:
CREATE TABLE Clientes ( CodCliente INT NOT NULL PRIMARY KEY IDENTITY(1,1), NomeCliente VARCHAR(200) ) CREATE TABLE Vendas ( IdVenda INT NOT NULL PRIMARY KEY IDENTITY(1,1), NumeroVenda INT NOT NULL, CodCliente INT NOT NULL FOREIGN KEY REFERENCES Clientes(CodCliente) )
Tenho uma tabela de vendas aonde possuo informações dos clientes que efetuaram alguma compra e quais os produtos.
como um cliente pode efetuar uma ou mais vendas , as duas tabelas acima resolve.
entretanto uma venda pode ser de um ou mais produtos , assim e um relacionamento N X N
veja o exemplo:
CREATE TABLE Produtos ( Codproduto INT NOT NULL PRIMARY KEY IDENTITY(1,1), Nome VARCHAR(200), Preco DECIMAL(18,2) ) CREATE TABLE VendasClientes ( IdVendaCliente UNIQUEIDENTIFIER NOT NULL PRIMARY KEY DEFAULT(NEWSEQUENTIALID()), IdVenda INT NOT NULL FOREIGN KEY REFERENCES dbo.Vendas(IdVenda), IdProduto INT FOREIGN KEY REFERENCES dbo.Produtos(Codproduto) )
Assim o modelo fica coerente.
veja como fica :
Wesley Neves - Brasilia-DF
https://wesleyneves.wordpress.com/
MTA-SQL Server
MTA- Web Development
Analista Desenvolvedor.NET
Pós-Graduando em Banco de Dados
"Se a resposta for útil ou ajudar ,não esqueça de marcar"
- Editado Wesley Neves quinta-feira, 19 de outubro de 2017 11:17 complemento
- Sugerido como Resposta Junior Galvão - MVPMVP sábado, 21 de outubro de 2017 15:14
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 23 de outubro de 2017 17:04
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP sábado, 21 de outubro de 2017 15:15
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 23 de outubro de 2017 17:04
quinta-feira, 19 de outubro de 2017 11:49
Todas as Respostas
-
Luciano Lago,
Tem duas formas de fazer. A minha preferida é assim. Exemplo:
* tabela de vendas
- CodCliente;
- CodProduto;* tabela clientes
- CodClientes;* tabela produtos
- CodProduto;SELECT * FROM Clientes C INNER JOIN Vendas V INNER JOIN Produtos P ON V.CodProduto = P.CodProduto ON C.CodCliente = V.CodCliente
A outra forma é assim:
INNER JOIN com 3 tabelas
https://pt.stackoverflow.com/questions/72710/inner-join-com-3-tabelas
SELECT * FROM TB_ContratoCotista
INNER JOIN TB_Contrato ON TB_Contrato.id_contrato = TB_ContratoCotista.id_contrato
INNER JOIN TB_Cotista ON TB_Cotista = TB_ContratoCotista.id_cotistaVEJA TAMBÉM:
------------------------------------------------------Fazer INNER JOIN com 3 tabelas
https://social.msdn.microsoft.com/Forums/pt-BR/5356a208-f8e6-490d-9775-135a23b01170/fazer-inner-join-com-3-tabelas?forum=520
------------------------------------------------------INNER JOIN EM 3 TABELAS
http://www.devmedia.com.br/forum/inner-join-em-3-tabelas/440619
------------------------------------------------------
Como fazer a junção entre 3 tabelas com o JOIN?
http://www.guj.com.br/t/como-fazer-a-juncao-entre-3-tabelas-com-o-join/89261
------------------------------------------------------
22 - T-SQL - JOINS e INNER JOIN - Selecionar dados de duas ou mais tabelas - SQL Server
Neste vídeo vamos mostrar como é possível combinar dados de duas ou mais tabelas
https://youtu.be/4nbECYDlAwc
------------------------------------------------------
[]'s,
Fabio I.- Sugerido como Resposta Fabio I segunda-feira, 16 de outubro de 2017 09:56
-
Luciano,
Você poderia nos apresentar como esta definido o relacionamento entre estas tabelas?
Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-
Pelo que li e entendi , vc tem um problema na normalização da sua tabela, eu não vi 3 tabelas no seu texto e sim 4 tabelas. vc talvez esteja sofrendo por falta de uma tabela no seu modelo, vou dar uma explicação:
Estou tentando fazer um inner join com 3 tabelas, mas estou com um produto cartesiano(Esse é o problema)
Tenho uma tabela de vendas aonde possuo informações dos clientes
aqui temos duas tabelas , uma de Vendas e outra de Cliente, seque um exemplo:
CREATE TABLE Clientes ( CodCliente INT NOT NULL PRIMARY KEY IDENTITY(1,1), NomeCliente VARCHAR(200) ) CREATE TABLE Vendas ( IdVenda INT NOT NULL PRIMARY KEY IDENTITY(1,1), NumeroVenda INT NOT NULL, CodCliente INT NOT NULL FOREIGN KEY REFERENCES Clientes(CodCliente) )
Tenho uma tabela de vendas aonde possuo informações dos clientes que efetuaram alguma compra e quais os produtos.
como um cliente pode efetuar uma ou mais vendas , as duas tabelas acima resolve.
entretanto uma venda pode ser de um ou mais produtos , assim e um relacionamento N X N
veja o exemplo:
CREATE TABLE Produtos ( Codproduto INT NOT NULL PRIMARY KEY IDENTITY(1,1), Nome VARCHAR(200), Preco DECIMAL(18,2) ) CREATE TABLE VendasClientes ( IdVendaCliente UNIQUEIDENTIFIER NOT NULL PRIMARY KEY DEFAULT(NEWSEQUENTIALID()), IdVenda INT NOT NULL FOREIGN KEY REFERENCES dbo.Vendas(IdVenda), IdProduto INT FOREIGN KEY REFERENCES dbo.Produtos(Codproduto) )
Assim o modelo fica coerente.
veja como fica :
Wesley Neves - Brasilia-DF
https://wesleyneves.wordpress.com/
MTA-SQL Server
MTA- Web Development
Analista Desenvolvedor.NET
Pós-Graduando em Banco de Dados
"Se a resposta for útil ou ajudar ,não esqueça de marcar"
- Editado Wesley Neves quinta-feira, 19 de outubro de 2017 11:17 complemento
- Sugerido como Resposta Junior Galvão - MVPMVP sábado, 21 de outubro de 2017 15:14
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 23 de outubro de 2017 17:04
-
-
Boa tarde,
Se não houver retorno na thread, a mesma será encerrada.
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Boa tarde,
Por falta de retorno essa thread está encerrada.Se necessário, favor abrir uma nova thread.
Atenciosamente,
Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.