Jerarquía de categorías o familias

21/01/2008 - 17:23 por Masta | Informe spam
Hola a todos,

Tengo una tabla de Categorias o Familias de la siguiente forma:

CATEGORIAS
=IDCategoria
Nombre
Parent
Nivel

Mi problema viene porque necesito una consulta donde, dándole el
IDCategoria de una Familia de primer nivel, saque su árbol de
categorías. Cada categoría puede tener diferente número de niveles.

A ver si me podéis echar una mano.
Muchas gracias

Preguntas similare

Leer las respuestas

#1 Jesús López
21/01/2008 - 17:50 | Informe spam
Qué versión de SQL Server tienes? 2000, 2005 ?




"Masta" escribió en el mensaje
news:
Hola a todos,

Tengo una tabla de Categorias o Familias de la siguiente forma:

CATEGORIAS
=IDCategoria
Nombre
Parent
Nivel

Mi problema viene porque necesito una consulta donde, dándole el
IDCategoria de una Familia de primer nivel, saque su árbol de
categorías. Cada categoría puede tener diferente número de niveles.

A ver si me podéis echar una mano.
Muchas gracias
Respuesta Responder a este mensaje
#2 Masta
21/01/2008 - 18:08 | Informe spam
Uso SQL Server 2005.

Gracias.
Respuesta Responder a este mensaje
#3 Jesús López
21/01/2008 - 18:18 | Informe spam
DECLARE @IDCategoria int
SET @IDCategoria = 1

;WITH CategoriasCTE
AS
(
SELECT IDCategoria, Nombre, Parent, Nivel
FROM Categorias
WHERE IDCategoria = @IDCategoria

UNION ALL

SELECT C.IDCategoria, C.Nombre, C.Parent, C.Nivel
FROM Categorias C
INNER JOIN CategoriasCTE CTE
ON C.Parent = C.IDCategoria
)
SELECT * FROM CategoriasCTE

Saludos:

Jesús López
www.solidq.com



"Masta" escribió en el mensaje
news:
Uso SQL Server 2005.

Gracias.
Respuesta Responder a este mensaje
#4 Alejandro Mesa
21/01/2008 - 18:34 | Informe spam
Hola Jesús,

Antes de que Masta diga que no le funciona el script, corrijo el alias que
usas en la clausula FROM de la parte recursiva.

DECLARE @IDCategoria int
SET @IDCategoria = 1

;WITH CategoriasCTE
AS
(
SELECT IDCategoria, Nombre, Parent, Nivel
FROM Categorias
WHERE IDCategoria = @IDCategoria

UNION ALL

SELECT C.IDCategoria, C.Nombre, C.Parent, C.Nivel
FROM Categorias C
INNER JOIN CategoriasCTE CTE
ON C.Parent = CTE.IDCategoria -- < -
)
SELECT * FROM CategoriasCTE

Masta, chequea en los libros en linea por "consultas recursivas" y
"expresiones de tabla comunes".

Consultas recursivas mediante expresiones de tabla comunes
http://msdn2.microsoft.com/es-es/li...86243.aspx

AMB

"Jesús López" wrote:

DECLARE @IDCategoria int
SET @IDCategoria = 1

;WITH CategoriasCTE
AS
(
SELECT IDCategoria, Nombre, Parent, Nivel
FROM Categorias
WHERE IDCategoria = @IDCategoria

UNION ALL

SELECT C.IDCategoria, C.Nombre, C.Parent, C.Nivel
FROM Categorias C
INNER JOIN CategoriasCTE CTE
ON C.Parent = C.IDCategoria
)
SELECT * FROM CategoriasCTE

Saludos:

Jesús López
www.solidq.com



"Masta" escribió en el mensaje
news:
> Uso SQL Server 2005.
>
> Gracias.



Respuesta Responder a este mensaje
#5 Jesús López
21/01/2008 - 18:40 | Informe spam
Gracias Alejandro, se me escapó el gazapo :)



"Alejandro Mesa" escribió en el
mensaje news:
Hola Jesús,

Antes de que Masta diga que no le funciona el script, corrijo el alias que
usas en la clausula FROM de la parte recursiva.

DECLARE @IDCategoria int
SET @IDCategoria = 1

;WITH CategoriasCTE
AS
(
SELECT IDCategoria, Nombre, Parent, Nivel
FROM Categorias
WHERE IDCategoria = @IDCategoria

UNION ALL

SELECT C.IDCategoria, C.Nombre, C.Parent, C.Nivel
FROM Categorias C
INNER JOIN CategoriasCTE CTE
ON C.Parent = CTE.IDCategoria -- < -
)
SELECT * FROM CategoriasCTE

Masta, chequea en los libros en linea por "consultas recursivas" y
"expresiones de tabla comunes".

Consultas recursivas mediante expresiones de tabla comunes
http://msdn2.microsoft.com/es-es/li...86243.aspx

AMB

"Jesús López" wrote:

DECLARE @IDCategoria int
SET @IDCategoria = 1

;WITH CategoriasCTE
AS
(
SELECT IDCategoria, Nombre, Parent, Nivel
FROM Categorias
WHERE IDCategoria = @IDCategoria

UNION ALL

SELECT C.IDCategoria, C.Nombre, C.Parent, C.Nivel
FROM Categorias C
INNER JOIN CategoriasCTE CTE
ON C.Parent = C.IDCategoria
)
SELECT * FROM CategoriasCTE

Saludos:

Jesús López
www.solidq.com



"Masta" escribió en el mensaje
news:
> Uso SQL Server 2005.
>
> Gracias.



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida