none
Sql Recursiva RRS feed

  • Pergunta

  • Existe outra maneira de fazer a query abaixo

    sem usar recursividade?

    WITH cteMenuNivel(id,Nome,Nivel,

    NomeCompleto)

    AS

    (
        -- Ancora
        SELECT id,Nome,1 AS 'Nivel',CAST(Nome AS VARCHAR(255)) AS 'NomeCompleto'
        FROM tbMenu WHERE idPai IS NULL

        UNION ALL

        -- Parte RECURSIVA
        SELECT
    m.id,m.Nome,c.Nivel + 1 AS 'Nivel',
            CAST((c.NomeCompleto + '/' + m.Nome) AS VARCHAR(255)) 'NomeCompleto'
        FROM tbMenu m INNER JOIN cteMenuNivel c ON m.idPai = c.id

    )
    SELECT Nivel,NomeCompleto FROM cteM

    sexta-feira, 23 de agosto de 2013 00:16

Respostas

  • JCEOMS,

    Outras possibilidades seriam você utilizar Tabelas Temporárias ou Derived Table.

    Ou então no seu próprio Select fazer uso de Join com a própria table.

    O que você esta querendo fazer?


    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]

    • Marcado como Resposta Alysson Queiroz terça-feira, 27 de agosto de 2013 18:45
    sábado, 24 de agosto de 2013 14:22

Todas as Respostas

  • JCEOMS,

    Outras possibilidades seriam você utilizar Tabelas Temporárias ou Derived Table.

    Ou então no seu próprio Select fazer uso de Join com a própria table.

    O que você esta querendo fazer?


    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]

    • Marcado como Resposta Alysson Queiroz terça-feira, 27 de agosto de 2013 18:45
    sábado, 24 de agosto de 2013 14:22
  • é uma consulta em árvore

    na mesma tabela, este é uma tabela de menus do sistema   

    CREATE TABLE tbMenu
    (
    id INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    idPai INT NULL,
    Nome VARCHAR(30) NOT NULL
    )
    INSERT tbMenu (idPai,Nome) VALUES
    (NULL,'Menu'),(1,'Vestuario'),(1,'Brinquedo'),(1,'Informatica'),
    (2,'Terno'),(2,'Casaco'),(2,'Sapato'),(2,'Meia'),(3,'Carrinho'),
    (3,'Boneca'),(4,'Netbook'),(4,'Webcam'),(4,'Desktop')                             

    sexta-feira, 30 de agosto de 2013 11:39