Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/03/2014, 12:06
Avatar de leo_garay91
leo_garay91
 
Fecha de Ingreso: mayo-2012
Ubicación: argentina
Mensajes: 51
Antigüedad: 11 años, 11 meses
Puntos: 0
left join con multiple condiciones

hola a todos, tengo una consulta con respecto a LEFT JOIN, tengo 4 tablas, tipos_personas,personas,cursos,personas_cursos. En esta ultima tabla es producida por la relacion n:m entre las personas y cursos primeras tablas.
lo se almacena en personas_cursos son aque las personas que van a un curso en un determinado año

Código SQL:
Ver original
  1. Personas
  2. +---------------
  3. | FIELD            
  4. +---------------
  5. | id_persona  
  6. | id_tipo_persona
  7. | dni_p              
  8. | apellido_p      
  9. | nombre_p  
  10.  
  11. cursos
  12. +-----------
  13. | FIELD      
  14. +-----------
  15. | id_curso  
  16. | nombre_c
  17.  
  18. personas_cursos
  19. +----------
  20. | FIELD      
  21. +------------
  22. | id_persona
  23. | id_curso
  24. | año
  25. +---------


lo que yo quiero consultar son aquellas personas que no esten en personas_cursos en un año determinado osea algo asi

Código SQL:
Ver original
  1. SELECT p.id_persona, nombre_p,apellido_p
  2. FROM persoas p
  3. LEFT JOIN personas_cursos cp ON p.id_persona=cp.id_persona
  4. WHERE id_tipo_persona= $tp
  5. && fecha=2014
  6. && cp.id_persona IS NULL
  7. ORDER BY apellido_p,nombre_p ASC

con esta consulta no me trae nada, pero si le quito la sentencia && fecha=2014, me trae a las personas que no estan en ningun curso, pero aqui el problema porque una persona puede estar varias veces en un curso pero en años diferentes.

desde ya gracias y saludos

Última edición por gnzsoloyo; 02/03/2014 a las 16:16