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

Problemas con left join

Estas en el tema de Problemas con left join en el foro de Mysql en Foros del Web. Buenas amigos, tengo un problema y paso a comertarles, espero me puedan ayudar: Tengo dos tablas Empleado_TipoAporte y TipoAporte, de la siguiente manera. - TipoAporte ...
  #1 (permalink)  
Antiguo 27/08/2013, 18:08
Avatar de juanleonardo  
Fecha de Ingreso: agosto-2007
Mensajes: 382
Antigüedad: 17 años, 3 meses
Puntos: 0
Problemas con left join

Buenas amigos, tengo un problema y paso a comertarles, espero me puedan ayudar:

Tengo dos tablas Empleado_TipoAporte y TipoAporte, de la siguiente manera.

- TipoAporte tiene 4 valores fijos.
- Empleado_TipoAporte tiene la foranea de la tabla TipoAporte


Cita:
SELECT eta.MontoAporte, eta.TipoAporteId
FROM Empleado_TipoAporte eta
LEFT JOIN TipoAporte ta ON ta.TipoAporteId = eta.TipoAporteId
WHERE eta.EmpleadoId = 4 AND eta.RemuneracionId = 4
ORDER BY eta.TipoAporteId
quiero obtener los 4 TipoAporte, y si no tiene su correspondencia en la tabla Empleado_TipoAporte que muestre nulo.

Con esa consulta crei q funcionaria pero no.

Gracias.
  #2 (permalink)  
Antiguo 27/08/2013, 19:49
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 11 años, 4 meses
Puntos: 46
Respuesta: Problemas con left join

y porq no utiliza un inner join asi nomas ?? sin left ni raight ?? eso de left y right siempre me ha dado dolor de cabeza xD
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #3 (permalink)  
Antiguo 28/08/2013, 16:39
Avatar de juanleonardo  
Fecha de Ingreso: agosto-2007
Mensajes: 382
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Problemas con left join

Hola KATHYU, gracias por la pronta respuesta, el problema de usar solamente INNER JOIN solo es que me va traer solo los datos q son comunes a ambas tablas, lo que necesito es q siempre traiga todos los TipoAporte y si no tiene correspondencia en la tabla Empleado_TipoAporte entonces q me muestre nulo por ej.

Saludos.
  #4 (permalink)  
Antiguo 28/08/2013, 17:03
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 5
Respuesta: Problemas con left join

prueba cambiando el left por el right.....
__________________
Lo que no se....tampoco creo saberlo....
  #5 (permalink)  
Antiguo 28/08/2013, 18:40
Avatar de juanleonardo  
Fecha de Ingreso: agosto-2007
Mensajes: 382
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Problemas con left join

Hola ambichol gracias por la respuesta, probe como me dijiste pero obtengo el mismo resultado... que sera?
  #6 (permalink)  
Antiguo 28/08/2013, 20:31
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: Problemas con left join

Cita:
quiero obtener los 4 TipoAporte, y si no tiene su correspondencia en la tabla Empleado_TipoAporte que muestre nulo.
Pues es imposible que logres nulos sobre la base de la consulta que propones. Para que se diesen, la consulta debería estar basada (tabla izquierda) en la tabla TipoAporte, y está basada en la de empleados. Es decir que estás exactamente haciéndolo al revés.
Además, en tu consulta estás pidiendo sólo por columnas de la tabla de empleados, por lo que jamás saldrán los nulos, ya que en esas condiciones sólo puede devolver registros existentes, reales. Los nulos no se representan en ese caso.
¿Se entiende?

Para que la consulta devuelva nulos debes: 1) Basarla en la tabla de TiposAporte, y 2) el SELECT debe referirse al menos a una columna de la tabla de tiposAporte.
O sea:
Código MySQL:
Ver original
  1.     ta.TipoAporteId,
  2.     eta.EmpleadoId,
  3.     eta.MontoAporte
  4.     TipoAporte ta LEFT JOIN Empleado_TipoAporte eta ON ta.TipoAporteId = eta.TipoAporteId
  5.     eta.EmpleadoId = 4
  6.     AND eta.RemuneracionId = 4
  7.     OR eta.TipoAporteId IS NULL
  8. ORDER BY eta.TipoAporteId
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 08/09/2013, 15:27
Avatar de juanleonardo  
Fecha de Ingreso: agosto-2007
Mensajes: 382
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Problemas con left join

Hola gnzsoloyo, acabo de probar lo q me dijiste y tampoco me devolvio lo que ando buscando. Q podra ser?

Gracias, saludos
  #8 (permalink)  
Antiguo 08/09/2013, 15:36
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: Problemas con left join

Postea lo siguiente:
1) La consulta tal y como la usas (a mi no me consta que hayas usado la mía).
2) La estructura de tablas. Los CREATE TABLE.
3) Un conjunto de datos de ejemplo.
4) Muestranos cómo debería ser el conjunto de datos resultado.

Sin eso, sin poder probar, estaremos dando vueltas en el aire.

Vayamos a lo concreto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

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