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

Problema con left join anidados

Estas en el tema de Problema con left join anidados en el foro de Bases de Datos General en Foros del Web. Hola! Estoy tratando de hacer una consulta en mysql que no doy con lo correcto, espero que me puedan ayudar... Las tablas son publicaciones (idPub, ...
  #1 (permalink)  
Antiguo 23/12/2010, 22:30
 
Fecha de Ingreso: diciembre-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Problema con left join anidados

Hola! Estoy tratando de hacer una consulta en mysql que no doy con lo correcto, espero que me puedan ayudar...
Las tablas son publicaciones (idPub, nombre) , autores (idAutor, nombre, apellido), autoresDePublicaciones (idAutor, idPublicacion) , generos (idGenero, nombre), generosDePublicaciones (idPub, idGenero)
Una publicacion puede tener uno, ninguno o varios autores y generos.
Mi problema es que necesito obtener las publicaciones de deterninado genero y determinado autor. El resutado tiene que tener el nombre de la publicacion, el id, todos los generos asignados y todos los autores asignados a la publicacion.
Ejemplo:

idPub| nombrePub| autores| genero |
--------------------------------------------------------------------------------------------------------
1 | publicacion 1 | mario Benedetti, gioconda belli | novelas, biografias |
5 | publicacion 3 | mario Benedetti, juan perez | novelas, cuentos |

En el ejemplo el autor era Mario Benedetti (id=2)I y el género novelas (id=5).
La consulta que estoy haciendo es:

SELECT p.idPub AS Codigo, p.nombre AS Nombre, group_concat( a.apellido ) AS Autores, (
SELECT group_concat( g.nombre )
FROM generos g, generosdepublicaciones gp
WHERE g.idGenero = gp.idGenero
AND gp.idPub = p.idPub
GROUP BY gp.idPub) AS Generos
FROM publicaciones p
LEFT JOIN autoresdepublicaciones ap ON ap.idPublicacion = p.idPub
LEFT JOIN autores a ON a.idAutor = ap.idAutor
WHERE a.idAutor=2 AND g.ifGenero=5
GROUP BY p.idPub

pero no reconoce el id del genero porque esta en una subconsulta supongo... no se estoy perdida... Ademas no puedo obtener el nombre y el apellido del autor porque si hago group_concat( concat(a.nombre, ' ' , a.apellido ) me da error

Bueno espero haber sido clara, muchas gracias.

Etiquetas: anidados, join, left
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 00:19.