Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

left join con multiple condiciones

Estas en el tema de left join con multiple condiciones en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/03/2014, 12:06
Avatar de 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
  #2 (permalink)  
Antiguo 03/03/2014, 07:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: left join con multiple condiciones

Cita:
lo que yo quiero consultar son aquellas personas que no esten en personas_cursos en un año determinado osea algo asi
Código MySQL:
Ver original
  1. SELECT p.*
  2. FROM personas p LEFT JOIN
  3.     (SELECT id_persona FROM personas_cursos pc WHERE pc.año=2014) cp
  4.          ON p.id_persona=cp.id_persona
  5. WHERE cp.id_persona IS NULL
  6. AND p.id_tipo_persona= $tp
  7. ORDER BY p.apellido_p,p.nombre_p ASC;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 04/03/2014, 21:56
Avatar de leo_garay91  
Fecha de Ingreso: mayo-2012
Ubicación: argentina
Mensajes: 51
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: left join con multiple condiciones

Hola Quim, gracias por responder, cuando llegue a casa revisare lo que me sugieres, gracias desde ya.
saludos

Etiquetas: condiciones, join, left, null, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:03.