Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta dependiente con campos null

Estas en el tema de Consulta dependiente con campos null en el foro de Mysql en Foros del Web. Estimados: Tengo una tabla en donde almacen productos ordenados por categorias. Estas categorias estan ordenadas en tres niveles dependientes, es decir, primero se elige la ...
  #1 (permalink)  
Antiguo 21/06/2007, 22:49
 
Fecha de Ingreso: septiembre-2006
Ubicación: Argentina
Mensajes: 190
Antigüedad: 17 años, 7 meses
Puntos: 1
Consulta dependiente con campos null

Estimados: Tengo una tabla en donde almacen productos ordenados por categorias. Estas categorias estan ordenadas en tres niveles dependientes, es decir, primero se elige la categoria, luego la sub y por ultimo otra subcategoria. Esto esta armado en php y básicamente almacena los id de cata categoria y subcategoria en la tabla de productos. Además tengo las tres tablas correspondientes a cada categoria donde se almacenan los nombres.

El problema surge cuando hago una consulta y en la tabla de productos algun campo de categorias figura en null, porque no es obligatorio llenar las tres categorias para que inserte un registro sino solo una. La estructura de la tabla es la siguiente:
Código:
 id    categoria    sub_cat1     sub_cat2     titulo     descripcion    precio
 1        1            4              2         Algo        Algo          100
 2        1            2             Null       Algo        Algo           50
Hago la siguiente consulta para reemplazar los numeros de id de categorias por sus correspondientes nombres:

Código:
SELECT categorias.categoria, sub_cat1.sub_cat1, sub_cat2.sub_cat_2, productos.titulo, productos.descripcion, productos.precio, productos.stock
FROM categorias, sub_cat1, sub_cat2, productos
WHERE categorias.id_categoria = productos.categoria
AND sub_cat1.id_subcat1 = productos.sub_cat1
AND sub_cat2.id_subcat2 = productos.sub_cat2
LIMIT 0 , 30
Pero el problema es que solo me aparecen los registros que tienen las tres categorias completas. Si no me equivoco hay que emplear LEFT JOIN pero no recuerdo como hacerlo... leí bastante pero no sale.

Apreciaría mucho su ayuda.

Desde ya, muchas gracias.
__________________
Gustavo
  #2 (permalink)  
Antiguo 22/06/2007, 11:44
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Re: Consulta dependiente con campos null

FROM categorias left join sub_cat1 left join sub_cat2 left join productos

si tenes en las tablas muchisimos registros esto se va a hacer practicamente eterno cuando envies la consulta

recomendacion ponerle indices a las claves primarias de cada tabla para q la busqueda se vea drasticamente mejorada

saludos espero te sirva
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 22/06/2007, 12:38
 
Fecha de Ingreso: septiembre-2006
Ubicación: Argentina
Mensajes: 190
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Consulta dependiente con campos null

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'left join sub_cat1, left join sub_cat2, left join productos
WHERE categorias.id' at line 2

Recuerdo que los left join iban entre parentesis, pero no logro hacerlo bien. Por ahora, tu consulta me da ese error... igualmente gracias.
__________________
Gustavo
  #4 (permalink)  
Antiguo 22/06/2007, 12:48
 
Fecha de Ingreso: septiembre-2006
Ubicación: Argentina
Mensajes: 190
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Consulta dependiente con campos null

LISTO:

SELECT categorias.categoria, sub_cat1.sub_cat1, sub_cat2.sub_cat_2, productos.titulo, productos.descripcion, productos.precio, productos.stock
FROM productos
LEFT JOIN sub_cat1 ON ( sub_cat1.id_subcat1 = productos.sub_cat1 )
LEFT JOIN sub_cat2 ON ( sub_cat2.id_subcat2 = productos.sub_cat2 )
LEFT JOIN categorias ON ( categorias.id_categoria = productos.categoria )
LIMIT 0 , 30


Pueden cerrar este tema. Gracias.
__________________
Gustavo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:52.