Usuário com melhor resposta
Select com select recursivo.

Pergunta
-
Olá pessoal,
Eu preciso de uma ajuda,
Eu estava fazendo um select para buscar registros de uma tabela.
Esta tabela possui um relacionamento hierárquico, ou seja tenho IdPai e IdFilho.Então eu fiz desta forma:
Select COUNT(*)
FROM Chamado
where YEAR(DataAbertura) = 2012 AND MONTH(DataAbertura) = 1
and IdCategoria in (Select Id From Categoria Where IdPai = 171)O problema, é que o meu select está pegando apenas o filho da categoria 171 e não todos os filhos.
Desta forma eu consegui criar um select recursivo que pega todas as categorias filhas pela categoria informada:WITH ConsultaRecursiva AS (
SELECT Id FROM Categoria AS Pai
WHERE IdPai = 171
UNION ALL
SELECT C.Id FROM Categoria AS C
INNER JOIN ConsultaRecursiva AS CR ON CR.Id = C.IdPai)
SELECT * FROM ConsultaRecursivaO meu problema é que eu preciso substituir este select recursivo dentro do meu select que está na Query, mas ao fazer isto ele não reconhece o WITH.
Eu tentei também criar uma procedure e colocar la dentro, mas ele não aceita procedure dentro do select.
Basicamente, eu preciso fazer um select de todos os registros de categorias filhas.
Respostas
-
Boa noite,
Experimente desta forma:
WITH ConsultaRecursiva AS ( SELECT Id FROM Categoria AS Pai WHERE IdPai = 171 UNION ALL SELECT C.Id FROM Categoria AS C INNER JOIN ConsultaRecursiva AS CR ON CR.Id = C.IdPai) Select COUNT(*) FROM Chamado where YEAR(DataAbertura) = 2012 AND MONTH(DataAbertura) = 1 and IdCategoria in (Select Id From ConsultaRecursiva)
Espero que seja útil.
Assinatura: http://www.imobiliariasemsuzano.com.br
- Marcado como Resposta Rodrigo Epic quinta-feira, 21 de junho de 2012 13:18
Todas as Respostas
-
Boa noite,
Experimente desta forma:
WITH ConsultaRecursiva AS ( SELECT Id FROM Categoria AS Pai WHERE IdPai = 171 UNION ALL SELECT C.Id FROM Categoria AS C INNER JOIN ConsultaRecursiva AS CR ON CR.Id = C.IdPai) Select COUNT(*) FROM Chamado where YEAR(DataAbertura) = 2012 AND MONTH(DataAbertura) = 1 and IdCategoria in (Select Id From ConsultaRecursiva)
Espero que seja útil.
Assinatura: http://www.imobiliariasemsuzano.com.br
- Marcado como Resposta Rodrigo Epic quinta-feira, 21 de junho de 2012 13:18
-
-