none
TABELAS AGRUPADAS RRS feed

  • Pergunta

  • Bom dia,

    Preciso realizar uma consulta onde por exemplo em uma tabela eu tenho os seguintes dados

    É um exemplo:

    PRODUTO

    Código_PRODUTO

    Nome

    NIVEL

     

    111

    PRODUTO_1

    A

    2

    PRODUTO_2

    A

    SUB_PRODUTO

    Código_SUB_PRODUTO

    Código_PRODUTO

    Nome

    NIVEL

    1

    111

    SUB_PRODUTO

    B

    2

    111

    PRODUTO

    A

    3

    2

    SUB_PRODUTO

    B

    Se eu fizer uma consulta no PRODUTO (111) e o seu SUB_PRODUTO ficaria assim

    Resultado

    Código_PORDUTO

    Nome

    Código_SUB_PRODUTO

    Nome

    NIVEL

    111

    PRODUTO_1

    1

    SUB_PRODUTO

    B

    111

    PRODUTO_1

    2

    PRODUTO

    A

    Agora vem a dúvida, é possível com base no resultado acima ele identificar que um item da minha consulta que está na tabela SUB_PRODUTO também está na tabela PRODUTO e realizar uma nova consulta incluindo agora esse item no resultado.

    Exemplo

    Código_PORDUTO

    Nome

    Código_SUB_PRODUTO

    Nome

    NIVEL

    111

    PRODUTO_1

    1

    SUB_PRODUTO

    B

    111

    PRODUTO_1

    2

    PRODUTO

    A

    2

    PRODUTO_2

    3

    SUB_PRODUTO

    B

    Tentei alguns SELECT utilizando IF ou WHILE mas não tive sucesso, se alguém tiver algum exemplo ficarei muito grato.

    sexta-feira, 10 de março de 2017 14:26

Respostas

  • Bom dia,

    Experimente fazer uns testes com CTE recursiva conforme exemplo abaixo:

    with CTE_Rec as
    (
        select
            p.Codigo_Produto,
            p.Nome,
            s.Codigo_Sub_Produto,
            s.Nome as Nome_Sub_Produto,
            s.Nivel
        from Sub_Produto as s
        inner join Produto as p
            on p.Codigo_Produto = s.Codigo_Produto
        where
            s.Codigo_Produto = 111
    
        union all
    
        select
            p.Codigo_Produto,
            p.Nome,
            s.Codigo_Sub_Produto,
            s.Nome as Nome_Sub_Produto,
            s.Nivel
        from CTE_Rec as c
        inner join Sub_Produto as s
            on s.Codigo_Produto = c.Codigo_Sub_Produto
        inner join Produto as p
            on p.Codigo_Produto = s.Codigo_Produto
    )
    
    select * from CTE_Rec
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Leandro HG sexta-feira, 7 de abril de 2017 12:18
    sexta-feira, 10 de março de 2017 15:01
  • Deleted
    sexta-feira, 10 de março de 2017 20:46

Todas as Respostas

  • Bom dia,

    Experimente fazer uns testes com CTE recursiva conforme exemplo abaixo:

    with CTE_Rec as
    (
        select
            p.Codigo_Produto,
            p.Nome,
            s.Codigo_Sub_Produto,
            s.Nome as Nome_Sub_Produto,
            s.Nivel
        from Sub_Produto as s
        inner join Produto as p
            on p.Codigo_Produto = s.Codigo_Produto
        where
            s.Codigo_Produto = 111
    
        union all
    
        select
            p.Codigo_Produto,
            p.Nome,
            s.Codigo_Sub_Produto,
            s.Nome as Nome_Sub_Produto,
            s.Nivel
        from CTE_Rec as c
        inner join Sub_Produto as s
            on s.Codigo_Produto = c.Codigo_Sub_Produto
        inner join Produto as p
            on p.Codigo_Produto = s.Codigo_Produto
    )
    
    select * from CTE_Rec
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Leandro HG sexta-feira, 7 de abril de 2017 12:18
    sexta-feira, 10 de março de 2017 15:01
  • Deleted
    sexta-feira, 10 de março de 2017 19:31
  • Isso mesmo José Diz, o que a consulta vai fazer é abrir o processo Pai e sua cadeia de processo, caso tenha um item que possui processo de produção eu preciso ver o que está amarrado a ele. Mas é bem isso que você colocou "Estrutura de produtos"

    sexta-feira, 10 de março de 2017 20:17
  • Deleted
    sexta-feira, 10 de março de 2017 20:46
  • Bom dia,

    Devido a falta de interação do autor dessa pergunta,

    essa thread está sendo fechada. Caso o problema ainda

    esteja ocorrendo, favor abrir uma nova thread.

    Atenciosamente,

     


    Robson William Silva

    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.

    terça-feira, 14 de março de 2017 12:13