Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Inner join

Estas en el tema de Inner join en el foro de PHP en Foros del Web. Señores tengo la siguiente consulta Código PHP: $query = mysql_query  ( "select info.order, info.item, info.suffix, info.co, info.schedule, embobinado.statusemb, embobinado.idtx, corecoil.statuscore, corecoil.idtx,preliminar.idtx,preliminar.statuspre,oven.idtx,oven.statusoven, final.idtx,final.statusfinal, empaque.idtx, empaque.statusemp from (info inner join embobinado on info.schedule=embobinado.schedule) inner join corecoil on embobinado.idtx=corecoil.idtx inner join preliminar on corecoil.idtx=preliminar.idtx inner join oven on preliminar.idtx=oven.idtx  inner join final on oven.idtx=final.idtx inner join empaque on final.idtx=empaque.idtx where info.schedule='S750000'" );  pero some da una ...
  #1 (permalink)  
Antiguo 25/11/2015, 08:24
 
Fecha de Ingreso: octubre-2015
Ubicación: ciudad juarez
Mensajes: 90
Antigüedad: 8 años, 6 meses
Puntos: 1
Sonrisa Inner join

Señores tengo la siguiente consulta

Código PHP:
$query=mysql_query ("select info.order, info.item, info.suffix, info.co, info.schedule, embobinado.statusemb,
embobinado.idtx, corecoil.statuscore, corecoil.idtx,preliminar.idtx,preliminar.statuspre,oven.idtx,oven.statusoven,
final.idtx,final.statusfinal, empaque.idtx, empaque.statusemp from (info inner join embobinado on info.schedule=embobinado.schedule)
inner join corecoil on embobinado.idtx=corecoil.idtx
inner join preliminar on corecoil.idtx=preliminar.idtx
inner join oven on preliminar.idtx=oven.idtx 
inner join final on oven.idtx=final.idtx
inner join empaque on final.idtx=empaque.idtx
where info.schedule='S750000'"
); 
pero some da una consulta.

aver si me puedo explicar


tengo 7 tablas la primera es info en esta tiene todos los datos de la orden, la segunda es embobinado esta es la tabla del primer poceso del producto y despues sigue la tabla corecoil y asi sucesivamente lo que pasa es que tengo un trasformador que tiene todos los reportes hasta la ultima tabla este tiene el id LNVN-20 esta es la consulta que me muestra, pero tengo otros dos transfotmadores con los id's LNVN1-21 y LNVN1-22
pero estos nadamas estan reportados asta la segunda tabla y no me muestra los datos de estos como puedo hacer para me de la consulta con los campos que ya estan reportados y dejar vacios los que aun faltan por reportar
  #2 (permalink)  
Antiguo 25/11/2015, 08:51
Avatar de danistrein  
Fecha de Ingreso: septiembre-2008
Ubicación: Salta Capital
Mensajes: 550
Antigüedad: 15 años, 7 meses
Puntos: 9
Respuesta: Inner join

proba sacando los paréntesis de from :/
__________________
Appones.net - www.appones.net
  #3 (permalink)  
Antiguo 25/11/2015, 08:57
 
Fecha de Ingreso: octubre-2015
Ubicación: ciudad juarez
Mensajes: 90
Antigüedad: 8 años, 6 meses
Puntos: 1
Respuesta: Inner join

Cita:
Iniciado por danistrein Ver Mensaje
proba sacando los paréntesis de from :/
ya quite los parentesis y sigue igual
  #4 (permalink)  
Antiguo 25/11/2015, 09:24
Avatar de 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, 4 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)
  #5 (permalink)  
Antiguo 25/11/2015, 09:48
 
Fecha de Ingreso: octubre-2015
Ubicación: ciudad juarez
Mensajes: 90
Antigüedad: 8 años, 6 meses
Puntos: 1
Respuesta: Inner join

Cita:
Iniciado por gnzsoloyo Ver Mensaje
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.
no amigo no funciona me sigue dando los mismos datos
  #6 (permalink)  
Antiguo 25/11/2015, 10:07
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Inner join

Dudaría que te siga dando los mismos datos, en tanto la tabla base sea la INFO...

La query que te pasé debería devolver TODO lo que está en INFO, tenga o no relación con EMBOBINADO, en ese caso las columnas de embobinado contendrían NULL.
Por su lado, el segundo LEFT JOIN devolvería todo lo que tenga relación con CORECOIL, pas todo lo que exista en EMBOBINADO auqyue NO esté relacionado con corecoil, y así sucesivamente.

Pregunta: ¿Probaste la consulta manualmente en el phpMyadmin?
__________________
¿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 25/11/2015, 10:24
 
Fecha de Ingreso: octubre-2015
Ubicación: ciudad juarez
Mensajes: 90
Antigüedad: 8 años, 6 meses
Puntos: 1
Respuesta: Inner join

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Dudaría que te siga dando los mismos datos, en tanto la tabla base sea la INFO...

La query que te pasé debería devolver TODO lo que está en INFO, tenga o no relación con EMBOBINADO, en ese caso las columnas de embobinado contendrían NULL.
Por su lado, el segundo LEFT JOIN devolvería todo lo que tenga relación con CORECOIL, pas todo lo que exista en EMBOBINADO auqyue NO esté relacionado con corecoil, y así sucesivamente.

Pregunta: ¿Probaste la consulta manualmente en el phpMyadmin?
listo amigo ya quedo

era esta linea la que no funcionaba

Código PHP:
WHILE ($row mysql_fetch_array($query)){ 

Etiquetas: join, select, sql, 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 05:15.