Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/12/2010, 22:30
cirinar
 
Fecha de Ingreso: diciembre-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
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.