reycar2010
Usuario Novato
Usuario Novato

Necesito hacer una consulta a la BD y no se muy bien como hacerlo soy nuevo en esto.
El sistema es una galeria de fotos de animales donde se va navegando por medio de una estructura de carpetas algo asi como el explorador de win.
El sistema maneja subcategorias.
Existe solo una tabla de categorias (donde se incluyen las subcategorias), esta es la estrcturada: ID_CAT| PARENT_ID| Nombre | Descripción | Alias.
ID_CAT es el valor único de la categoria o subcategoria y PARENT_ID es el id de la categoria o subcategoria a la que pertenece.
Si en PARENTID es 0 significa que es la categoria principal y no esta dentro de otra categoria, pero si existe un numero diferente de 0 significa que esta dentro de otra categoria que es el id que contiene PARENT_ID.

Ejemplo:
ID_CAT | PARENT_ID| NOMBRE |...
10_________0_______ANIMALES
20________10_______PERROS
30________20_______GRANDES
40________20_______PEQUEÑOS


Necesito sacar el nombre del archivo de la imagen con el nombre de la subcategoria donde se encuentra y el nombre de categoría donde pertenece ( la categoria con parentid =0) ejemplo: Imagen1.jpg | Pequeños | Animales
o todas las categorias por donde hay que navegar para llegar a la imagen Imagen.jpg | Pequeños | Perros | Animales

Se me olvidaba, la estructura de la tabla de imagenes es : ID_img | Nombre | Ruta |....| ID_CATP

Espero me ayuden y haberme explicado bien GRACIAS.

Avatar Image
@man / @woman
@man / @woman

No veo mucha dificultud, la verdad...

Cuando haces una consulta a la tabla de imagenes tienes el ID_CAT y el PARENT_ID ¿verdad?

Después tienes una tabla de categorias, donde tienes ID_CAT y PARENT_ID ¿verdad?

Vamos a referinos como tabla.columna.

Para buscar la categoria, tienes que buscar en la categorias.id_cat el número que te haya salido en imagenes.id_cat y te dara el categoria.nombre

Para buscar la subcategoria, como puede que no haya tienes que ver primero el imagenes.id_cat si es 0, no buscas, si es distinto de 0, pues buscar en categorias.id_cat por el imagenes.parent_id y te dara el categoria.nombre

El problema que tienes, y te esta costando mas hacerlo es que dos columnas de tablas distintas se llaman igual. Sería mejor que se llamasen distinta, tipo CAT_ID_CAT_PRI, CAT_ID_CAT_SEC, CAT_Nombre en categorias y IMG_ID_CAT_PRI, IMG_ID_CAT_SEC en la tabla de imagenes.

Pero es más, yo te aconsejaría hacerlo más simple. Tablas:

- Categoria_PRI: con CAT_PRI_ID y CAT_PRI_Nombre

- Categoria_SEC: con CAT_SEC_ID, CAT_PRI_ID, CAT_SEC_Nombre

- Imanges: con IMG_ID, CAT_SEC_ID, CAT_PRI_ID

De esta forma, sabrías mejor donde buscar.

reycar2010
Usuario Novato
Usuario Novato

Muchas Gracias por contestar tomaré en cuenta tu sugerencia.

Contestando a tus preguntas en las 2 es sí.

El problema es que no soy muy bueno con esto del mysql como veras soy un novato ;) , y no se como ejecutar esa consulta tengo algo pero solo me falta el nombre de la categoria con su parent_id=0 osea el nivel mas alto de la cat, por ahora me estoy documentando respecto al tema pero si me urge sacar esa consulta agradeceria que me apoyaras mas con esto.

Avatar Image
@man / @woman
@man / @woman

¿No prefieres redifinir las tablas ahora y crear las tres que te pronpongo?... te seras más facil.

Sino, escribe la consulta que haces... y te diremos que esta mal.

reycar2010
Usuario Novato
Usuario Novato

esto es lo que tengo algo sencillo, pero aun nose como mostrar la categoria principal ya que la que muestra es la ultima donde se encuentra la imagen

SELECT a.Nombre AS ARCHIVO,a.contador AS "Numero de Clic", cc.nomcat AS CATEGORIA
FROM tab_img AS a
LEFT JOIN tab_cat AS cc ON cc.ID_CAT = a.ID_CATP

lo que muestra es el nombre del archivo, el numero de clic que ya se le dieron a la imagen junto con la categoria en la que está. Repito falta la categoria principal osea parent_id=0, suponiendo que una imagen esté por debajo de varias subcategorias como haria para hacer un ciclo o algo que vaya comparando hasta llegar al nivel 0 para llegar a la categoria principal con parent_id=0 de la tabla tab_cat.

NOTA: Corregí los nombre de los columnas del primer post, los puse mal.

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
No se han encontrado temas similares