Hola emilio_viguri:
Tienes un problema con la condición, pues al ponerla tal como lo estás haciendo ESTÁS OBLIGANDO A QUE EXISTAN COBROS PARA EL ALUMNO, en otras palabras, estás echando a perder el LEFT JOIN.
Código:
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)
Lo haces así:
Código:
...
WHERE
alumno.activo = 1 AND
(DATEDIFF(fechavencimiento, curdate() ) <= 5 or
fechavencimiento IS NULL)
...
Recierda que cuando haces un LEFT JOIN, aquellos campos de la tabla en el LEFT que no EXISTAN, son rellenados con un null...
haz la prueba y nos comentas.
Saludos
Leo