Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/04/2013, 08:19
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta con join y tabla intermedia

En primera instancia, tienes que tener en cuenta que el LEFT JOIN, por sus características, puede ser algo traicionero si no se lo entiende bien.
LEFT JOIN devuelve todo lo de la primera tabla (izquierda), junto con lo de la segunda relacionado con ella y NULL donde no encuentre registros relacionables con esa segunda.
Esto implica al menos dos cosas:
1) Si relacionas la primera tabla con la segunda, y luego la primera con la tercera, generarás un producto cartesiano. Es un caso de relaciones en estrella y es un defecto de construcción de la consulta.
2) Toda relación entre más de dos tablas debe ser en cadena (como la pusiste tu), pero debes recordar que si el resultado de la segunda tabla en un registro es NULL, no devolverá registros en la tercera relacionados, porque no se puede relacionar NULL con una tabla.

En definitiva, si la relación es obligatoria, no tiene sentido usar LEFT JOIN, porque te devolverá relaciones nulas y curriculums nulos si no hay relaciones dadas con la primera tabla.

La consulta que pones está relativamente bien, aunque si lo que quieres es sólo los casos relacionados, debes usar INNER y no LEFT.
Código MySQL:
Ver original
  1. FROM entrevistas E
  2.     INNER JOIN relaciones R ON E.id_entrevista = R.id_entrevista
  3.     INNER JOIN curriculum C ON R.cv = C.id_curriculum

Técnicamente, es probable que el resultado sea el mismo, por lo que deberías aclararnos mejora qué te refieres con "no me sale"...
¿Qué es lo que no te sale?


PD: Es muy mala práctica poner "*" en consultas, especialmente cuando trabajas con tablas relacionadas, porque eso te devolverá todos los campos de todas las tablas al mismo tiempo, y no sólo es raro que los necesites todos, sino que además devolverá datos duplicados por repeticion de valores correspondientes a las FK.
Es mejor práctica especificar los campos que necesitas, y sólo esos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)