El orden de los factores si altera el producto en el SQL.
El asunto es simple: Como LEFT JOIN trae lo de la tabla izquierda, tenga o no coincidencias con la derecha, pero tu estás poniendo como primera tabla la de los pagos, la respuesta será la lista de pagos, tengan o no coincidencias con los alumnos... Y como no hay pago sin alumno, está funcionando como INNER JOIN.
Lo que tienes que poner primero es la tabla donde está la lista mayor, que de donde la segunda toma datos, esto es:
Código MySQL:
Ver original a.idAlumno,
nombre,
aPaterno,
aMaterno,
ap.matricula,
m.matricula total,
(m.matricula-ap.matricula) debe
alumno a
LEFT JOIN alumnopago ap
ON a.idAlumno
= ap.idAlumno
De ese modo traerá a toda la lista de alumnos hayan hecho o no pagos.
Cita: estos querys yo los corro normal en SQLServer 2008
Eso es medio irrelevante, porque la lógica interna de los DBS es diferente en cada uno (en Oracle esta consulta no funcionaría, porque se escribe distinto). Lo que sucede es que SQL Server lo implementa de otro modo y requiere otras cláusulas.
Cuando cambias de DBMS tienes que andar todo el tiempo con el manual a un lado. Siempre. No des por sentado que todos los DBMS hacen las cosas de la misma forma.