Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/02/2012, 01:34
Avatar de HiToGoRoShi
HiToGoRoShi
 
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Problemas con LEFT JOIN

Que tal muchachos, tengo una duda ...

Tengo este query
Código MySQL:
Ver original
  1.     a.idAlumno,
  2.     nombre,
  3.     aPaterno,
  4.     aMaterno,
  5.     ap.matricula,
  6.     m.matricula total,
  7.     (m.matricula-ap.matricula) debe
  8. FROM alumnopago ap
  9. LEFT JOIN alumno a
  10. ON a.idAlumno = ap.idAlumno
  11. LEFT JOIN matricula m
  12. ON m.idMatricula = ap.idMatricula;

Que trae la tabla alumno, alumnopago, y matricula

En matricula yo guardo el monto que tiene cada periodo, es decir durante el año se pagan dos veces la matricula, para el perido I y el periodo II.

Ahora en la tabla AlumnoPago yo guardo la cantidad que esta pagando, y uno la tabla AlumnoPago con Matricula con el campo ambiguo idMatricula, de esta manera yo puedo saber a que periodo pertenece ese pago, y cuanto es lo que tiene que pagar

Y la tabla alumno la relaciono con alumnopago con el campo idAlumno, al ejecutar mi query y no habiendo registros en alumnopago, no trae nada, por mas que uso leftjoin, es decir si usara INNER JOIN estoy diciendole que la relacion deberia existir estrictamente, pero con LEFT JOIN le digo lo contrario, que traiga a partir de lo que hay a la izquierda no, osea partiendo de alumnos, y al final no me trae nada, pero cuando corro este query si me trae algo

Código MySQL:
Ver original
  1.     a.idAlumno,
  2.     nombre,
  3.     aPaterno,
  4.     aMaterno,
  5.     ap.matricula,
  6.     m.matricula total,
  7.     (m.matricula-ap.matricula) debe
  8. FROM alumnopago ap
  9. LEFT JOIN alumno a
  10. ON a.idAlumno = ap.idAlumno;

Ya me trae lo de la izquierda, estos querys yo los corro normal en SQLServer 2008, no e tenido problemas, o acaso tnego que crear la relacion previamente para usar correctamente los INNER Y LEFT JOIN, ya que no e creado clave foraneas.