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

Inner Join

Estas en el tema de Inner Join en el foro de Mysql en Foros del Web. hola mis amigos una consulta, quiero realizar una consulta tengo 5 tablas y lo que quiero es unir para sacar mi consulta ejmplo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 25/03/2013, 12:38
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Mensaje Inner Join

hola mis amigos una consulta, quiero realizar una consulta tengo 5 tablas y lo que quiero es unir para sacar mi consulta

ejmplo:

Código MySQL:
Ver original
  1. select alumno.codigo, alumno.nombres, alumno.matricula, alumno.mensualidad, ano.codigo, ano.nombre,  aula.codigo, aula.nombre, pago1.codigo, pago1.pagado, deuda1.codigo, deuda1.pagado
  2. from alumno left join aula
  3. on aula.codigo=alumno.aula
  4. left join ano on ano.codigo=alumno.ano
  5. left join pago1 on alumno.codigo=pago1.alumno
  6. left join deuda1 on alumno.codigo=deuda1.alumno
  7.  where aula.codigo='2' AND ano.codigo='2'

me funciona muy bien, pero no me visualiza todos los alumnos q estan matriculado solo me vota los alumnos que pagaron

ayudenme porfavor

Última edición por gnzsoloyo; 25/03/2013 a las 12:58 Razón: SQL sin etiuquetar. Usar Highlight "MySQ"
  #2 (permalink)  
Antiguo 25/03/2013, 12:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Inner Join

Un LEFT JOIN es mandatorio si no pones la condición de NULL : Sólo devolverá aquellos registros que cumplan la relación en todas las tablas al mismo tiempo. Por eso está devolviendo los que pagaron: Sólo esos figuran en la tabla de pagos.
Si quieres que devuelva todos, la consulta debe ser distinta.
Pero ten en cuenta que el LEFT JOIN es engañoso: Sólo funciona con más de dos tablas cuando cada LEFT JOIN relaciona la tabla resultado con la siguiente. Si creas un LEFT JOIN en estrella, se generan productos cartesianos inesperados.
Por otro lado, no debes olvidarte que la dependencia en cadena hace que sólo devuelva datos si la siguiente tabla puede realmente relacionarse con la tabla resultado del JOIN anterior. Si el valor vinculado es NULL en el LEFT JOIN anterior, no se producirán resultados.
¿Se entiende?

Mi duda es si lo estás haciendo así para "facilitar" leer todo al mismo tiempo, o porque lo necesitas realmente así.
Es muy posible que en realidad debas hacer consultas diferentes para cumplir con diferentes datos.
Explica qué se supone que contiene el reporte que deseas armar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 25/03/2013 a las 13:04

Etiquetas: join, 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 18:12.