Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/10/2008, 14:10
oom
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santiago de Compostela
Mensajes: 61
Antigüedad: 20 años, 7 meses
Puntos: 0
Pregunta Seleccionar de dos tablas con tabla intermedia

Saludos.

Tengo dos tablas con relación x,x es decir que tengo que usar una tabla intermedia para crear las relaciones:

videos: id, titulo
tags: id, nombre
relaciones: id_videos, id_tags

Lo que quiero es hacer una consulta que me liste todos los tags y que me diga si estan relacionados con un video específico (por ejemplo id=4).
La prueba que hice es esta:

SELECT tags.id, tags.nombre, video.id as tiene_video
FROM tags
LEFT JOIN relaciones ON relaciones.id_tags = etiquetas.id
LEFT JOIN videos ON relaciones.id_videos = 4

Esto lo que hace es devolverme el id y el nombre del tag y el id del video (que siempre es 4) si está relacionado, sinó me devuelve NULL, es decir:

id nombre tiene_video
1 noticias NULL
2 humor NULL
3 deporte NULL
3 deporte 4
3 deporte NULL
4 cine 4
4 cine NULL

Lo que pasa es que me devuelve duplicados los registros (supongo que por cada video que tenga relacionado el tag aunque no sea el de id 4). Si le pongo un GROUP BY tags.id me devuelve lo siguiente:

id nombre tiene_video

1 noticias NULL
2 humor NULL
3 deporte NULL
4 cine 4

Es decir, me devuelve los tags como quiero pero el valor tiene_video no es fiable porque solo devuelve el primer valor que encontró (en deporte me devuelve NULL pero en la anterior consulta también devolvía el id 4, mientras que en cine me devuelve el resultado correcto porque es el primer valor de la anterior consulta).

Hai alguna manera de hacer esto en una consulta? Se pueden hacer un LEFT JOIN con dos tablas al mismo tiempo en vez de dos LEFT JOIN? o hai algun tipo de JOIN que una las tablas sin duplicar registros en la tabla de la izquierda?