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

Misma tabla con id_padre id_hijo

Estas en el tema de Misma tabla con id_padre id_hijo en el foro de Mysql en Foros del Web. Buenas tardes, Tengo una tabla para las tags de fotografías y otra tabla que relaciona cada foto con sus tags, tal que así: Código: TABLA ...
  #1 (permalink)  
Antiguo 10/02/2012, 08:10
 
Fecha de Ingreso: marzo-2004
Mensajes: 283
Antigüedad: 15 años, 9 meses
Puntos: 2
Misma tabla con id_padre id_hijo

Buenas tardes,

Tengo una tabla para las tags de fotografías y otra tabla que relaciona cada foto con sus tags, tal que así:

Código:
TABLA -> tags
id_tag | id_padre | nombre_tag
   1         0      Color
   2         0      Paisaje
   3         1      Rojo
   4         1      Azul
   5         1      Verde
   6         2      Campo
   7         2      Ciudad

TABLA-> tags_relaciones
id_tag | id_foto
   4        1
   6        1
   3        2
   7        2
Mi duda es si existe la posibilidad de que en una misma consulta para una id_foto dada me devuelva no solo el nombre de sus tags sino también el nombre del padre de cada tag. Por ejemplo con esta consulta, para la foto con id=2:

Código:
$id_foto = 2;
SELECT nombre_tag FROM tags
JOIN tags_relaciones ON tags.id_tag = tags_relaciones.id_tag AND tags_relaciones.id_foto= $id_foto

.
Obtengo: Rojo, Ciudad

Lo que yo querría obtener, si es que es posible, es el listado de tags pero con el padre al que pertenecen, es decir esto:

Color Rojo, Paisaje Ciudad

Alguien puede echarme una mano? Muchas gracias.
  #2 (permalink)  
Antiguo 10/02/2012, 10:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 11 años, 8 meses
Puntos: 300
Respuesta: Misma tabla con id_padre id_hijo

Echa primero un vistazo aquí:
http://www.vbmysql.com/articles/data...-data-in-mysql
  #3 (permalink)  
Antiguo 10/02/2012, 10:46
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 9 años, 2 meses
Puntos: 91
Respuesta: Misma tabla con id_padre id_hijo

Claro, para lograr eso solo debes hacer un nuevo JOIN con la tabla tags, teniendo en cuenta que al estar 2 veces la misma tabla debes ponerles alias distintos, y como creo es tu caso hay tags sin padres, entonces deberás hacerlo con LEFT JOIN para que no elimine los tags que no tienen padre.

Código MySQL:
Ver original
  1. SELECT padre.nombre_tag, hijo.nombre_tag FROM tags hijo
  2. LEFT JOIN tags padre ON hijo.id_padre = padre.id_tag
  3. JOIN tags_relaciones r ON r.id_tag = hijo.id_tag AND tags_relaciones.id_foto= $id_foto

con eso obtendrás en una columna distinta el nombre del padre, y en caso de que no tenga padre, será NULL.

Saludos.
__________________
Utilice el Highlight para mostrar código, mis ojos se lo agradecerán :)
qué es esto? :O -> http://i48.tinypic.com/5x3kzs.png
Ya sabes :)
  #4 (permalink)  
Antiguo 10/02/2012, 14:19
 
Fecha de Ingreso: marzo-2004
Mensajes: 283
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Misma tabla con id_padre id_hijo

Muchisimas gracias, ya lo he solucionado con el aporte de Ribon y he aprendido un montón con el enlace de jurena (me lo he leido entero...), si es que el caso que ponen en el ejemplo del enlace es basicamente lo mismo que tengo yo! Lo dicho muchas gracias a los 2!

Etiquetas: join, select, tabla, campos
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

SíEste tema le ha gustado a 1 personas




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