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

Sobre categorias y subcategorias

Estas en el tema de Sobre categorias y subcategorias en el foro de Mysql en Foros del Web. Buenas, tengo un problemilla con una consulta que no consigo sacar. Tengo una tabla llamada tbl_categorias con los campos (id, categoria, padre, productos), esta tabla ...
  #1 (permalink)  
Antiguo 02/07/2009, 11:01
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Sobre categorias y subcategorias

Buenas, tengo un problemilla con una consulta que no consigo sacar.
Tengo una tabla llamada tbl_categorias con los campos (id, categoria, padre, productos), esta tabla la uso para luego en la programacion crear un arbol de categorias y subcategorias, con lo que, relaciono el campo padre de la tabla con el id de la misma para saber que subcategoria desciende de qué padre (espero haberme explicado :))

El caso, es que hago esta consulta:
Código:
SELECT tbl_categorias.*, COUNT(*) productos FROM tbl_categorias JOIN tbl_productos ON tbl_categorias.id = tbl_productos.id_categoria WHERE tbl_productos.activo = 1 GROUP BY tbl_categorias.categoria ORDER BY tbl_categorias.padre, tbl_categorias.categoria;
La cual me devuelve unos resultados aceptables, excepto cuando una categoria padre, no tiene productos, pero si tiene una subcategoria, en ese caso, no me devuelve esa categoria padre, pero si la categoria hijo

Lo que quiero conseguir, es una consulta en la que me devuelva las categorias, junto con las correspondientes subcategorias que tengan productos, pero si una categoria no tiene productos, pero si tiene una subcategoria, que me la muestre.

Espero que quede claro lo que quiero conseguir, creo que no me dejo de ningun dato para que me podais hechar una mano, de todas formas, no cabe decir que aqui estoy para cualquier aclaracion :)

Un saludo compañeros!
  #2 (permalink)  
Antiguo 02/07/2009, 12:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Sobre categorias y subcategorias

Por lo que dices, estableces la relación de tbl_categorias con tbl_productos (con los campos tbl_categorias.id y tbl_productos.id_categoria), y la de tbl_categorias con tbl_subcategorias (con los campos tbl_categorias.padre e tbl_subcategorias.id), pero en ningún momento relacionas productos con subcategorias, que sería lo esperado. Me explico: puedes llegar a categorias desde subcategorias, pero no al revés. De todas formas puedes conseguir lo que quieres haciendo un left join que une subcategorias con categorias y luego inner join de categorias con productos, pero no le veo mucho sentido.
Tal vez no he entendido bien lo que quieres hacer.
  #3 (permalink)  
Antiguo 02/07/2009, 12:17
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Sobre categorias y subcategorias

En realidad solo tengo dos tablas, la tabla tbl_categorias y la tabla tbl_productos
como bien dices, relaciono la tabla tbl_productos con la tabla tbl_categorias mediante el JOIN.

En cuanto a las subcategorias, solo uso una tabla, la tabla tbl_categorias, en ella, tengo estos campos:
id
categoria (nombre de la categoria)
padre (el id de la categoria padre, es decir, tbl_categorias.id)
productos (el numero de productos de esa categoria)

Es decir, que no tengo otra tabla tbl_subcategorias.

Por ejemplo, supongamos que tengo los siguientes datos en la tabla tbl_productos (tienen mas campos, pero irrelevantes ahora)
PRODUCTO - CATEGORIA
producto 1 - subcat01
producto 3 - subcat06
producto 6 - cat1

y en la tabla tbl_categorias estos
ID - CATEGORIA - PADRE - PRODUCTOS
2 - subcat01 - 5 - 1
5 - cat89 - 0 - 0
3 - subcat06 - 8 - 1
8 - cat1 - 0 - 1


Es decir, con esos datos, la sentencia que he puesto, me devolveria las categorias:
subcat01, subcat06 y cat1
pero en realidad, deberia devolverme tambien cat89, ya que es la categoria padre de la subcat01

Espero que ahora este mejor explicado. Si hace falta, pongo datos reales de como tengo la base de datos, pero, son muchos campos y muchos son irrelevantes.

Un saludo y muchas gracias.
  #4 (permalink)  
Antiguo 02/07/2009, 12:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Sobre categorias y subcategorias

Esto es una estructura jerárquica. Yo no he trabajado nunca con ellas. Seguro que alguien del foro puede echarte una mano.
De todas formas, no sé si has visto esto:
http://dev.mysql.com/tech-resources/...ical-data.html
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 09:20.