Tema: Inner join
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/11/2015, 09:24
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Inner join

Un INNER JOIN es mandatorio. Deben existir registros en todas las tablas para que pueda devolverte datos.
En casos de reportes donde los datos sólo existen en algunas, pero se desea obtener todos los estados, incluidas aquellas columna por donde todavía no ha pasado, se debe usar LEFT JOIN.

Probemos esto:
Código MySQL:
Ver original
  1. /* Formatted on 2015/11/25 12:25 (Formatter Plus v4.8.7) */
  2. SELECT info.ORDER,
  3.        info.item,
  4.        info.suffix,
  5.        info.co,
  6.        info.schedule,
  7.        embobinado.statusemb,
  8.        embobinado.idtx,
  9.        corecoil.statuscore,
  10.        corecoil.idtx,
  11.        preliminar.idtx,
  12.        preliminar.statuspre,
  13.        oven.idtx,
  14.        oven.statusoven,
  15.        FINAL.idtx,
  16.        FINAL.statusfinal,
  17.        empaque.idtx,
  18.        empaque.statusemp
  19.   FROM info LEFT JOIN embobinado ON info.schedule = embobinado.schedule
  20.        LEFT JOIN corecoil ON embobinado.idtx = corecoil.idtx
  21.        LEFT JOIN preliminar ON corecoil.idtx = preliminar.idtx
  22.        LEFT JOIN oven ON preliminar.idtx = oven.idtx
  23.        LEFT JOIN FINAL ON oven.idtx = FINAL.idtx
  24.        LEFT JOIN empaque ON FINAL.idtx = empaque.idtx
  25.  WHERE info.schedule = 'S750000'
  26.     OR embobinado.schedule IS NULL
  27.     OR corecoil.idtx IS NULL
  28.     OR preliminar.idtx IS NULL
  29.     OR oven.idtx IS NULL
  30.     OR FINAL.idtx IS NULL
  31.     OR empaque.idtx IS NULL;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)