Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2008, 08:16
yomesmo
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 21 años, 1 mes
Puntos: 1
Ayuda con una consulta a dos tablas

Hola amigos, estoy atorado con una consulta SQL y francamente ya no doy con la forma de ejecutarla, doy vueltas y vueltas a lo mismo. Ojala alguien pierda cinco minutos y me tire un cable.

SITUACIÓN:

1.- Estoy montando una tienda virtual, en una tabla tengo las categorías de la tienda, en otra los productos.
2.- En la tabla de categorías, hay un campo numerico que identifica a cada categoría (CatId) y otro que indica si es la subcategoría de otra categoría (ParentCatId). En el campo ParentId se introduce el CatId de la categoría de la que depende, así genero un árbol de navegación.
3.- En la tabla de productos, cada producto lo relaciono con su categoría, mediante un campo llamado tambien CatId.

PROBLEMA:

1.- Al entrar en la tienda, muestro a un lado las categorías, si se escoge una categoría, muestro las subcategorías que dependen de esta, y así sucesivamente.
2.- Quiero que al hacer click sobre una categoría muestre los productos que cuelgan de esta, pero si no hubiera ninguno, pero si los hubiera en alguna subcategoría, o en una subsubcategoría, los muestre. Así siempre muestro productos relacionados con la categoría principal.


ESTRUCTURA DE LAS TABLAS

Tabla: Tienda_Cats
Id de cada categoría es el campo: CatId
Campo que relaciona cada categoría con su categoría superior de esta misma tabla: ParentCatId

Tabla: tienda_productos
Campo que relaciona a cada producto con su categoría: CatId



LA CONSULTA SQL:

Estoy probando con algo así, pero no consigo que me muestre los productos de las subcategorías relacionadas con la categoría:

SELECT tienda_productos.ProdNombre FROM ((tienda_productos LEFT JOIN tienda_impuestos ON tienda_productos.Id_impuesto = tienda_impuestos.Id_impuesto) LEFT JOIN Tienda_Cats ON Tienda_Cats.CatParentId = tienda_productos.CatId WHERE tienda_productos.CatId =" & variableCatId &" OR Tienda_Cats.CatParentId =" & variableCatId &"
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...