none
Subquery RRS feed

  • 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, tpA

    Mas da erro.

    Como posso fazer esta consulta?

    Obrigado,

    sexta-feira, 20 de setembro de 2013 20:23

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


    sexta-feira, 20 de setembro de 2013 21:01

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, tpA

    Mas 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

    sexta-feira, 20 de setembro de 2013 20:33
  • 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

    sexta-feira, 20 de setembro de 2013 20:54
  • 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

    sexta-feira, 20 de setembro de 2013 21:01
  • 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


    sexta-feira, 20 de setembro de 2013 21:01
  • Valeu pelas dicas pessoal

    Inclui o alias na subquery e deu certo.

    Valeu

    sexta-feira, 20 de setembro de 2013 21:07