Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/12/2008, 05:13
jose_cab
 
Fecha de Ingreso: noviembre-2008
Ubicación: Barcelona
Mensajes: 52
Antigüedad: 16 años, 3 meses
Puntos: 0
Una SELECT complicado que me trae de cabeza

Muy buenas.

El nuevo problema que ahora tengo es el siguiente:
Estoy haciendo un menú el cual me tiene que listar las categorías que tiene un fabricante. Ya he desarrollado parte de él para otros niveles pero en este nivel estoy atascado desde hace un par de días y la consulta no me sale. Es un SQL 2000.

La idea es la siguiente tengo una tabla CATEGORIAS y una tabla PRODUCTO y tengo que listar todas las categorías que pertenecen a un fabricante en concreto.

La tabla PRODUCTO tiene así mismo el código de la categoría CODCAT el fabricante FABRICA y los niveles de categoría dentro del menú CAT0, CAT1 y CAT2
El nivel CAT0 = 1 significa que pertenece a la categoría 1
El nivel CAT1 = 12 significa que pertenece a la categoría 12
El nivel CAT2 = 12 significa que también pertenece a la categoría 12 (Por lo tanto este artículo se mostrará también en ese nivel)
El nivel CAT2 = PC y CAT1 = 11 significa que este producto no se mostrará en la categoría con nivel 11 sino que de ella se desplegará otra categoría CAT2 = PC donde en esta si estarán todas las categoría con productos
En cuanto a TIENE_ARTIC significa si es 1 que en esta categoría ya tiene productos que dependen de ella y si es 0 significa que de esta categoría se desplegará otra categoría

Por ejemplo:

Código:
	1 ORDENADORES
		12	ORDENADORES AX	
		13	PORTATILES
			1310	PORTATIL ACER	
			* 132	PORTATIL HP	
			* 1329	ACCESORIOS HP
			133	PORTATIL TOSHIBA
			NA	Netbook			
			NB	Portátiles (>= 14 Pulg.)		
			* AN	Accesorios 	
				AN1	Accesorios		
				AN2	Accesorios Baterias	
				AN9	Accesorios Varios 
	2 DISPOSITIVOS
		21	CAJAS CONEX
De esta forma según las tablas que adjunto de ejemplo, si tengo que listar las categorías con nivel 13 que tienen articulos del fabricante 009 solo se mostrarán las categorías marcadas arriba con un asterisco, la 132, la 1329 y la AN porque son las únicas que cumplen con el nivel que les pertenece y que dentro tienen productos o subcategorías que tienen productos con el fabricante 009

Espero haberme explicado lo mejor posible. He probado de todo, pero no me acaba de funcionar, o me saca más de la cuenta o me falta alguna...

Código:
	TABLA: categorias
	==============
	codcat	descrip			nivel	tiene_artic
	MU	Modem Internos	61	0		
	A07	Estuches De Mp3	AK	1	
	AS	AccesoriosPC		11	0	
	40103	Altavoces activos	40	1	
	42105	Altavoces megafonia	42	1	
	AN1	Accesorios		AN	1		
              AN2	Accesorios Baterias	AN	1	
 	FD	Camaras		25	0
 	TI	PDA 			14	0
	1124	Ordenadores HP 	11	1
	PC	PCSobremesa		11	0	
	1	ORDENADORES	0	0	
	12	ORDENADORES AX	1	0
	13	PORTATILES		1	0
	1310	PORTATIL ACER	13	1	
	132	PORTATIL HP		13	1
	1329	ACCESORIOS HP	13	1
                133	PORTATIL TOSHIBA	13	1
	NA	Netbook		13	0		
	NB	Portátiles (>= 14 Pulg.)	13	0		
	AN	Accesorios 		13	0	
	2	DISPOSITIVOS		0	0
	21	CAJAS CONEX		2	0	
	AN9	Accesorios Varios 	AN	1

Código:
	TABLA: producto
	==============
	cod		descrip_art		  	codcat		fabrica		cat0	cat1	cat2  
	12220378	SERVIDOR HP PROLIANT DL360 	1222	    	009		1	12	12
	16005250	GPS GARMIN			16005		123		1	16	16
	11241250	ORDENADOR HP-COMPAQ 1		1124		009		1	11	11
	11241251	ORDENADOR HP-COMPAQ 2		1124		009		1	11	11
	ES-AK819AW	HP DC5800 C2D E8400 		PCE		009		1	11	PC
	ES-DC198A	HP DVI CABLE KIT		AS6		009		1	11	AS	
 	22110325	PLOTTER COLOR HP 		2211		009		2	22	22
	ES-AJ749A	HP BANDEJA 12HDS  		SX1		009		3	33	SX
	13201340	PORTATIL HP			132		009		1	13	13
	LX.TPX0Z.249	T94004G320G15W 			NBD		249		1	13	NB
	TGXAM127	PANTALLA 15.4 WIDESCR		AN9		073		1	13	AN
	AJ356AA	HP 12.1 DISPLAY			AN9		009		1	13	AN	
             13290015	CARGADOR HP			1329		009		1	13	13 

Última edición por jose_cab; 17/12/2008 a las 06:49 Razón: SE CAMBIA EL FORMATO