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.