Usuário com melhor resposta
Subquery

Pergunta
-
Pessoal boa tarde.
Estou com o seguinte problema e não consigo resolver.
Quero pegar o resultado de uma subquery e agrupar a soma de um deles por dois outros campos, tentei da seguinte forma:
Select
idA,
tpA,
SUM(qtd) as Total
From(
SELECT Tabela_A.Id_A as idA,
Tabela_A.Tipo_A as tpA,
Tabela_B.Quantidade AS qtd
FROM (Tabela_B
RIGHT JOIN Tabela_A ON Tabela_B.Id_A = Tabela_A.Id_A
INNER JOIN Tabela_C ON Tabela_A.Id_A = Tabela_C.Id_A
)
Group By idA, tpAMas da erro.
Como posso fazer esta consulta?
Obrigado,
Respostas
-
Você tem que dar um alias ao seu subselect
ex:
Select idA, tpA, SUM(qtd) as Total From( SELECT Tabela_A.Id_A as idA, Tabela_A.Tipo_A as tpA, Tabela_B.Quantidade AS qtd FROM Tabela_B RIGHT JOIN Tabela_A ON Tabela_B.Id_A = Tabela_A.Id_A INNER JOIN Tabela_C ON Tabela_A.Id_A = Tabela_C.Id_A ) A -- ALIAS DO SUBSELECT Group By idA, tpA
[ ]´s,
Lukas Baldan- Editado Lukas de Castro Ruocco Baldan sexta-feira, 20 de setembro de 2013 21:04
- Marcado como Resposta SeuBell sexta-feira, 20 de setembro de 2013 21:07
Todas as Respostas
-
Pessoal boa tarde.
Estou com o seguinte problema e não consigo resolver.
Quero pegar o resultado de uma subquery e agrupar a soma de um deles por dois outros campos, tentei da seguinte forma:
Select
idA,
tpA,
SUM(qtd) as Total
From(
SELECT Tabela_A.Id_A as idA,
Tabela_A.Tipo_A as tpA,
Tabela_B.Quantidade AS qtd
FROM (Tabela_B
RIGHT JOIN Tabela_A ON Tabela_B.Id_A = Tabela_A.Id_A
INNER JOIN Tabela_C ON Tabela_A.Id_A = Tabela_C.Id_A
)
Group By idA, tpAMas da erro.
Como posso fazer esta consulta?
Obrigado,
Você notou que tem um parêntese antes Tabela_B no from da subquery?
Isso vai gerar um erro quando você for executar sua consulta. Corriga sua consulta e execute.Fábio Alencar - MCP, MS e MCSD
-
Fábio, valeu pela resposta.
Tinha me esquecido de fechar o parentese.
Mas o erro permanece, os campos da primeira query não estão sendo reconhecidos, não sei se pode ou não usar o alias da query interna como colunas na query externa, estou achando que o erro está ai.
Obrigado
-
Boa tarde,
SeuBell, acredito que a "subquery" não seja necessária nesse caso, acho que é possível obter o resultado desejado com a query abaixo:
SELECT Tabela_A.Id_A as idA, Tabela_A.Tipo_A as tpA, SUM(Tabela_B.Quantidade) as Total FROM Tabela_A INNER JOIN Tabela_C ON Tabela_C.Id_A = Tabela_A.Id_A LEFT JOIN Tabela_B ON Tabela_B.Id_A = Tabela_A.Id_A Group By Tabela_A.Id_A, Tabela_A.Tipo_A
Pode ser também que não seja necessário o Inner Join com a Tabela_C.
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
-
Você tem que dar um alias ao seu subselect
ex:
Select idA, tpA, SUM(qtd) as Total From( SELECT Tabela_A.Id_A as idA, Tabela_A.Tipo_A as tpA, Tabela_B.Quantidade AS qtd FROM Tabela_B RIGHT JOIN Tabela_A ON Tabela_B.Id_A = Tabela_A.Id_A INNER JOIN Tabela_C ON Tabela_A.Id_A = Tabela_C.Id_A ) A -- ALIAS DO SUBSELECT Group By idA, tpA
[ ]´s,
Lukas Baldan- Editado Lukas de Castro Ruocco Baldan sexta-feira, 20 de setembro de 2013 21:04
- Marcado como Resposta SeuBell sexta-feira, 20 de setembro de 2013 21:07
-