Inquiridor
JOIN 3 Tabelas tendo como tabela Base somente uma

Pergunta
-
Olá Blogueiros da MS,
Quero aperfeiçoar uma Query que fiz, mas está complicado, quem puder me ajudar agradeço.
É o Seguinte:
Tenho 3 tabelas: Tb1, Tb2 e Tb3
A Tb2 e Tb3 tem relação com a Tb1, porém a Tb2 e Tb3 não tem entre elas.
Preciso pegar os registros a partir da Tb1 e que tenham registro tanto na Tb2 e Tb3. Consegui resolver o problema fazendo SubQuery's, mas gostaria de saber se tem um jeito de fazer em apenas uma query, levando em consideração a performance de execução, pois sei que com SubQuery's perdemos um pouco.
SQL com SubQuery:
--Tb2 com a Tb1
SELECT Tb2.[Chave Estrangeira], Tb2.[Quantidade Baixado]
FROM Tb2 INNER JOIN Tb1 ON Tb2.[Chave Estrangeira] = Tb1.[Chave Primária]
UNION ALL
--Tb3 com a Tb1
SELECT Tb3.[Chave Estrangeira], Tb2.[Quantidade Baixado]
FROM Tb3 INNER JOIN Tb1 ON Tb3.[Chave Estrangeira] = Tb1.[Chave Primária]Tentativa fazendo com apenas uma Query:
Obs.: Está ocorrendo duplicidades
SELECT Tb1.[Chave Primária], Tb2.[Quantidade Baixado] + Tb3.[Quantidade Baixado]
FROM Tb1 INNER JOIN Tb2 ON Tb1.[Chave Primária] = Tb2.[Chave Estrangeira]
INNER JOIN Tb3 ON T1.[Chave Primária] = Tb3.[Chave Estrangeira]
Armando Correa H Neto
Todas as Respostas
-
Armando, experimentou utilizar o DISTINCT?
SELECT DISTINCT Tb1.[Chave Primária], Tb2.[Quantidade Baixado] + Tb3.[Quantidade Baixado] FROM Tb1 INNER JOIN Tb2 ON Tb1.[Chave Primária] = Tb2.[Chave Estrangeira] INNER JOIN Tb3 ON T1.[Chave Primária] = Tb3.[Chave Estrangeira]
Abçs -
Se o DISTINCT não der certo, tente agrupar...
SELECT Tb1.[Chave Primária], SUM(Tb2.[Quantidade Baixado] + Tb3.[Quantidade Baixado]) FROM Tb1 INNER JOIN Tb2 ON Tb1.[Chave Primária] = Tb2.[Chave Estrangeira] INNER JOIN Tb3 ON T1.[Chave Primária] = Tb3.[Chave Estrangeira] GROUP BY Tb1.[Chave Primária]
Abçs- Editado _Juliano_Alves_ quinta-feira, 21 de fevereiro de 2013 16:43
-
Tentei aqui, mas não deu certo continua em duplicidade
Vou analisar os dados que ela está trazendo para verificar o motivo da duplicidade
e depois te pergunto se é possível removê-las a partir dessa mesma Query
Deste já Agradeço
Armando Correa H Neto
-
Armando,
Cara a alguns tive passei por uma situação parecida com a sua, e o problema estava justamente nos meus dados armazenados em algumas tabelas que estavam forçando a duplicidade devido ao erro no relacionamento e definição das chaves primárias no projeto que estavamos trabalhando.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
-