none
UNION RRS feed

  • Pergunta

  • Pessoal, bom dia

    Alguém conhece alguma maneira de fazer isso?

     

    (SELECT * FROM Tabela WHERE ID = 2212) Pai UNION
    (SELECT * from Tabela Where IDPai = Pai.ID)
    


     


    Henrique Fávaro Tâmbalo - Se a resposta ajudou, marque como resposta!
    quarta-feira, 20 de julho de 2011 12:00

Respostas

Todas as Respostas

  • Henrique,

     

    tente assim:

    SELECT b.*

    FROM TabelaA a INNER JOIN TabelaB b

    ON (a.ID = b.IDPAI)

    WHERE a.ID = 2212


    Fabrizzio A. Caputo
    Certificações: Oracle OCA 11g, MCITP SQL Server 2008 Implementation and Maintenance
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quarta-feira, 20 de julho de 2011 12:19
    Moderador
  • Fabricio, bom dia!

     

    Eu preciso fazer com union...


    Henrique Fávaro Tâmbalo - Se a resposta ajudou, marque como resposta!
    quarta-feira, 20 de julho de 2011 12:40
  • Henrique,

     

    Veja que o union é para juntar o resultado de 2 querys em apenas um result set. Poderia postar a estrutura de suas tabelas e qual o retorno desejado?


    Fabrizzio A. Caputo
    Certificações: Oracle OCA 11g, MCITP SQL Server 2008 Implementation and Maintenance
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quarta-feira, 20 de julho de 2011 12:42
    Moderador
  • Henrique

    qual a sua necessidade? exibir registros com suas dependencias? pq tem que se com o union?

    talvez uma cte dinamica te ajude, da uma olhada no artigo do Catae

    http://blogs.msdn.com/b/fcatae/archive/2010/11/10/query-recursiva.aspx

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 20 de julho de 2011 12:55
    Moderador
  • Pessoal, a estrutura das tabelas é essa:

    tenho essa tabela que ela é relacionada com ela mesmo

    ID Descricao IDPai
    1 Produto A   NULL
    2 Produto B   1
    3 Produto C   2
    4 Produto D   2
    5 Produto E   1
    6 Produto F   5
    7 Produto G  5
    8 Produto H  5

     

    Sei o código do Produto A e quero pegar seus filhos...


    Henrique Fávaro Tâmbalo - Se a resposta ajudou, marque como resposta!
    quarta-feira, 20 de julho de 2011 13:12
  • Henrique,

    Acredito que este script deve te ajudar...

    declare @tbTeste table (id int, descricao varchar(30), idPai int)
    insert into @tbTeste values
    (1,'Produto A',NULL),
    (2,'Produto B',1 ),
    (3,'Produto C',2 ),
    (4,' Produto D',2 ),
    (5,' Produto E',1 ),
    (6,' Produto F',5 ),
    (7,' Produto G',5 ),
    (8,' Produto H',5)
    
    select * from @tbTeste a inner join @tbTeste b on b.id=a.idPai Where a.idPai = 1 
    

     

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 20 de julho de 2011 13:37
    Moderador
  • Henrique,

          O UNION não é a ferramenta certa para fazer isso. Ela é feita para unir dois resultados em um único resultado, sem relacionamentos de uma query na outra... Conforme as sugestões do Fabrizzio e do Marcelo, o INNER JOIN numa estrutura chamada SELF JOIN, ou uma CTE recursiva é que faz isso...

     


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008
    quarta-feira, 20 de julho de 2011 13:50
    Moderador
  • Pessoal, muito obrigado pela ajuda. Estou tentando usar o CTE como o Marcelo falou.

    Marcelo, nessa estrutura que você passou hoje é feito assim e está muito lento :(


    Henrique Fávaro Tâmbalo - Se a resposta ajudou, marque como resposta!
    quarta-feira, 20 de julho de 2011 14:20
  • vc tem indices criados nas colunas Id e IDPAI?

    Att
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 20 de julho de 2011 14:35
    Moderador