Cuestión

21/04/2008 - 18:49 por Masta | Informe spam
Hola a todos.
Tengo una consulta a la que pasándole el ID de un producto, me saque
ciertos campos de la tabla Productos, además de los 2 ó 3 niveles de
categorización.
Cuando el producto está en una categoría con 3 niveles, la consulta
que os expongo más abajo me funciona correctamente, pero cuando el
producto pertenece a una categoría que sólo tiene dos niveles de
categorización, no da resultados.
Sé por qué no da resultado, es obvio habiendo montado la consulta como
la he montado, pero me gustaría saber cómo arreglar esta consulta para
que funcione con productos pertenecientes a categorías de 3 niveles y
pertenecientes a 2 niveles de categorización.


select
p.idproducto as ItemID,
d.nombre as Nombre,
upper(dbo.ReplaceCaracteres(d.nombre)) as NombreCorrecto,
p.ref as RefID,
upper(dbo.ReplaceCaracteres(Nivel1.nombre)) as CategoriaNivel1,
upper(dbo.ReplaceCaracteres(Nivel2.nombre)) as CategoriaNivel2,
upper(dbo.ReplaceCaracteres(Nivel3.nombre)) as CategoriaNivel3
from
new_productos as p,
new_productosd as d,
new_categorias as Nivel3
JOIN
new_categorias as Nivel2
ON
Nivel3.Parent=Nivel2.idcategoria
JOIN
new_categorias as Nivel1
ON
Nivel2.parent=Nivel1.idcategoria
where
p.idcategoria=Nivel3.idcategoria and
p.idproducto=d.idproducto and
p.idproducto!75


Muchas gracias por vuestra ayuda.
 

Leer las respuestas

#1 Gux (MVP)
21/04/2008 - 19:05 | Informe spam
Existen muy buenos artículos acerca de como representar y consultar
estructuras jerárquicas en bases de datos relacionales, por ejemplo lea para
obtener inspiración:

Working with hierarchical data in SQL Server databases
http://vyaskn.tripod.com/hierarchie...abases.htm

More Trees & Hierarchies in SQL
http://www.sqlteam.com/article/more...ies-in-sql



Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Masta" wrote:

Hola a todos.
Tengo una consulta a la que pasándole el ID de un producto, me saque
ciertos campos de la tabla Productos, además de los 2 ó 3 niveles de
categorización.
Cuando el producto está en una categoría con 3 niveles, la consulta
que os expongo más abajo me funciona correctamente, pero cuando el
producto pertenece a una categoría que sólo tiene dos niveles de
categorización, no da resultados.
Sé por qué no da resultado, es obvio habiendo montado la consulta como
la he montado, pero me gustaría saber cómo arreglar esta consulta para
que funcione con productos pertenecientes a categorías de 3 niveles y
pertenecientes a 2 niveles de categorización.


select
p.idproducto as ItemID,
d.nombre as Nombre,
upper(dbo.ReplaceCaracteres(d.nombre)) as NombreCorrecto,
p.ref as RefID,
upper(dbo.ReplaceCaracteres(Nivel1.nombre)) as CategoriaNivel1,
upper(dbo.ReplaceCaracteres(Nivel2.nombre)) as CategoriaNivel2,
upper(dbo.ReplaceCaracteres(Nivel3.nombre)) as CategoriaNivel3
from
new_productos as p,
new_productosd as d,
new_categorias as Nivel3
JOIN
new_categorias as Nivel2
ON
Nivel3.Parent=Nivel2.idcategoria
JOIN
new_categorias as Nivel1
ON
Nivel2.parent=Nivel1.idcategoria
where
p.idcategoria=Nivel3.idcategoria and
p.idproducto=d.idproducto and
p.idproducto!75


Muchas gracias por vuestra ayuda.

Preguntas similares