Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/05/2015, 13:43
Avatar de emilio_viguri
emilio_viguri
 
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 117
Antigüedad: 12 años, 11 meses
Puntos: 3
Pregunta Consulta con LEFT JOIN no muestra datos

Hola comunidad como siempre cuando no puedo mas acudo a ustedes para ayudarme

Tengo mis 2 tablas ALUMNO y COBRO para las cuales necesito saber que cobro es el próximo, cuales faltan... para lo cual hago lo siguiente.

Mis tablas
Código MySQL:
Ver original
  1. CREATE TABLE cobro (
  2.   idcobro INT(11) NOT NULL AUTO_INCREMENT,
  3.   idalumno INT(11) NOT NULL,
  4.   tipo TINYINT(1) UNSIGNED NULL,
  5.   monto FLOAT(10,2) NULL,
  6.   comentario VARCHAR(200) NULL,
  7.   fechadeposito DATE NULL,
  8.   fechavencimiento DATE NULL,
  9.   fecharegistro DATETIME NULL,
  10.   PRIMARY KEY(idcobro),
  11.   INDEX cobro_FKIndex1(idalumno)
  12. );
  13.  
  14. CREATE TABLE alumno (
  15.   idalumno INT(11) NOT NULL AUTO_INCREMENT,
  16.   nombre VARCHAR(300) NULL,
  17.   nivelescolar TINYINT(1) UNSIGNED NULL,
  18.   activo TINYINT(1) UNSIGNED NULL DEFAULT 1,
  19.   inscripcion FLOAT(10,2) NULL,
  20.   mensualidad FLOAT(10,2) NULL,
  21.   otrospagos VARCHAR(255) NULL,
  22.   PRIMARY KEY(idalumno)
  23. );

Mis consulta así funciona pero si no tengo ningún registro de pago en la tabla pago no me muestra nada necesitaré que me ponga los idalumno que no tengan ningún registro en la tabla cobros.

Código MySQL:
Ver original
  1. SELECT alumno.idalumno, alumno.nombre, alumno.nivelescolar, alumno.sexo, alumno.inscripcion, alumno.mensualidad, alumno.otrospagos
  2. FROM alumno
  3. LEFT JOIN cobro ON cobro.idalumno = alumno.idalumno
  4. WHERE alumno.activo = 1
  5. AND DATEDIFF(fechavencimiento, curdate() ) <= 5 # :asco: SI QUITO ESTO ME MUESTRA LO QUE NECESITO PERO NO CUENTA LOS DÍAS
  6. ORDER BY DATEDIFF(fechavencimiento, curdate() )

Lo que no se como hacer es decirle a MySQL que...

Muéstrame todos los alumnos activos que su fecha de pago este próxima a vencer o que no tengas ninguno cobro realizado (que no tenga ningún registro en la tabla cobro)

Última edición por gnzsoloyo; 26/05/2015 a las 14:01