SQL - Duda con varios left join

 
Vista:

Duda con varios left join

Publicado por cirinar (1 intervención) el 24/12/2010 05:17:47
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 para obtener todas las publicaciones sin filtrar por genero o autor 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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder