Foros del Web » Programando para Internet » PHP »

PHP OO mostrar valores de dos tablas en una consulta

Estas en el tema de mostrar valores de dos tablas en una consulta en el foro de PHP en Foros del Web. Hola tengo un problemon, debo listar el contenido de una bd mysq llamada taller y una tabla llamada trabajos, con todos los trabajos ingresados y ...
  #1 (permalink)  
Antiguo 01/02/2013, 06:25
 
Fecha de Ingreso: enero-2013
Mensajes: 22
Antigüedad: 11 años, 9 meses
Puntos: 0
mostrar valores de dos tablas en una consulta

Hola tengo un problemon, debo listar el contenido de una bd mysq llamada taller y una tabla llamada trabajos, con todos los trabajos ingresados y tengo otra tabla llamada historial, al hacer una tabla dinamica, y mostrar mis registros filtrados por un area, trato de que cada trabajo muestre su historial o lo ultimo ingresado, lo hice asi.

bd taller, tablas: trabajos, campos: id_trabajos, fecha_ini, fecha_term, area, tabla historial: id_history, id_trabajos, responsable, area_actual, observaciones.

quiero que al mostrar un listado de todos los trabajos filtrados por area al final coloque las observaciones del historial correspondiente al id_trabajo relacionado.

Ej.
Nº trabajo Area fecha inicio fecha termino observaciondes
1 ventas 12/12/2312 15/12/2312 (aqui poner lo del historial)
2 ventas 11/12/2312 18/12/2312 (aqui poner lo del historial)

como puedo hacer eso? ayuda estoy en contra del tiempo
  #2 (permalink)  
Antiguo 01/02/2013, 07:10
 
Fecha de Ingreso: septiembre-2012
Ubicación: Argentina
Mensajes: 144
Antigüedad: 12 años, 2 meses
Puntos: 12
Respuesta: mostrar valores de dos tablas en una consulta

buenas como estaS??

deberias hacer un select donde de todos los datos y las tablas que necesitas recuerda que historial.id_trabajos=trabajo.id_trabajos

Código SQL:
Ver original
  1. SELECT * FROM historial,trabajo WHERE trabajo.id_trabajos=historial.id_trabajos

con lo anterior estas relacionando las tablas y obteniendo todos los datos

Asi obtendrias todos los datos correspondiente el id_trabajos, luego deberias realizar un msql_fetch_assoc con un while para acceder a cada dato de los id_trabajos
  #3 (permalink)  
Antiguo 01/02/2013, 07:33
 
Fecha de Ingreso: enero-2013
Mensajes: 22
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: mostrar valores de dos tablas en una consulta

Me puedes aclarar algo, no soy muy perito en el tema pero me defiendo con ayuditas, hice essto:

mysql_select_db($database_sicot, $sicot);
$query_trabajos = "SELECT * FROM trabajos, historial WHERE trabajos.id_trabajos = historial.id_trabajos AND area = '$MM_authorizedUsers' AND condicion = '2' ORDER BY id_trabajos DESC";
$trabajos = mysql_query($query_trabajos, $sicot) or die(mysql_error());
$row_trabajos = mysql_fetch_assoc($trabajos);
$totalRows_trabajos = mysql_num_rows($trabajos);


pero me devuelve todo menos las observaciones, que me falta??
o si es posible un ejemplo se agradece muchisimo sus respuestas
  #4 (permalink)  
Antiguo 01/02/2013, 08:19
 
Fecha de Ingreso: septiembre-2012
Ubicación: Argentina
Mensajes: 144
Antigüedad: 12 años, 2 meses
Puntos: 12
Respuesta: mostrar valores de dos tablas en una consulta

osea te devuelve toda la demas informacion pero no la observacion? no es asi?...

Primero fijate si en la base de datos hay cargado algo en el campo de observaciones

luego hace esto y dime que te aparece

echo $row_trabajos['observaciones'];

si no muestra nada es porque viene vacia.
  #5 (permalink)  
Antiguo 01/02/2013, 08:22
 
Fecha de Ingreso: septiembre-2012
Ubicación: Argentina
Mensajes: 144
Antigüedad: 12 años, 2 meses
Puntos: 12
Respuesta: mostrar valores de dos tablas en una consulta

Tambien para ver todos los datos de la consulta hace lo siguiente para saber si se realizo correctamente.

print_f($row_trabajos);
  #6 (permalink)  
Antiguo 01/02/2013, 09:07
 
Fecha de Ingreso: enero-2013
Mensajes: 22
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: mostrar valores de dos tablas en una consulta

Voy encaminado hice lo siguiente:

mysql_select_db($database_sicot, $sicot);
$query_trabajos = "SELECT trabajos.*, historial.observaciones, historial.id_trabajos FROM trabajos, historial WHERE trabajos.id_trabajos = historial.id_trabajos AND area = '$MM_authorizedUsers' ";
$trabajos = mysql_query($query_trabajos, $sicot) or die(mysql_error());
$row_trabajos = mysql_fetch_assoc($trabajos);
$totalRows_trabajos = mysql_num_rows($trabajos);

eso me da resultado, me muestra las observaciones donde van asociadas al id del trabajo, pero tambien me muestra los vacios, (me repite los id_trabajos), por que el historial almacena estados sin observaciones, intente poniendo if($row_trabajos['observaciones'] != "")... pero nada.

Falta q solo muestr el id_trabajo 1 vez y si tiene observaciones las muestr y estaria ok.

eternamente agradecido de los comentarios, sigo trabajando en busca de la solucion
  #7 (permalink)  
Antiguo 01/02/2013, 09:11
 
Fecha de Ingreso: septiembre-2012
Ubicación: Argentina
Mensajes: 144
Antigüedad: 12 años, 2 meses
Puntos: 12
Respuesta: mostrar valores de dos tablas en una consulta

Compañero lo que podes hacer es lo siguiente

if(!empty($row_trabajos['observaciones']))

prueba esa funcion, pregunta si no es vacia

Me alegro que te haya servido la ayuda, cuentame como te fue con esa funcion
  #8 (permalink)  
Antiguo 01/02/2013, 10:09
 
Fecha de Ingreso: enero-2013
Mensajes: 22
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: mostrar valores de dos tablas en una consulta

no, no funciona, me sigue mostrando todos y no el ultimo
  #9 (permalink)  
Antiguo 01/02/2013, 10:29
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: mostrar valores de dos tablas en una consulta

hola

mmmmm prueba esta forma

Código PHP:
Ver original
  1. mysql_select_db($database_sicot, $sicot);
  2. $query_trabajos = "SELECT trabajos FROM trabajos WHERE area = '$MM_authorizedUsers' ";
  3. $trabajos = mysql_query($query_trabajos, $sicot) or die(mysql_error());
  4. $row_trabajos = mysql_fetch_assoc($trabajos);
  5. $totalRows_trabajos = mysql_num_rows($trabajos);
  6.  
  7. // recorres los trabajos
  8. while($datotrabajo = mysql_fetch_object($trabajos))
  9. {
  10.       $id_trabajo = $datotrabajo->id_trabajos;// esto es una simulacion no se como se llamen tus campos
  11.      
  12.       // consultas las observaciones
  13.       $query_historial = "SELECT * FROM historial WHERE id_trabajos = '$id_trabajo' ";
  14.       $historial = mysql_query($query_historial, $sicot) or die(mysql_error());
  15.       $row_historial = mysql_fetch_assoc($historial);
  16.       $totalRows_historial = mysql_num_rows($historial);
  17.  
  18.       //validas si encontro observaciones para ese trabajo
  19.       if($totalRows_historial  > 0)
  20.       {
  21.          //recorres el resultado de la consulta
  22.         while($datohistorial = mysql_fetch_object($historial))
  23.         {
  24.             //almacenas los datos en un arreglo
  25.             $observaciones[] = $datohistorial;     
  26.         }
  27.       }
  28.       else
  29.       {
  30.              $observaciones = array();
  31.       }
  32.  
  33.       // creas un arreglo final para almacenar la informacion
  34.       $info_trabajos = array("id_trabajo"=>$id_trabajo,
  35.                              "historial"=>$observaciones
  36.                              );
  37.  
  38.       $salida_final[] = $info_trabajos;// creo un arreglo donde almacenes cada trabajo con sus respectivas observaciones
  39.      
  40.      
  41. }
  42. var_dump($salida_final);// de esta manera obtendras un arreglo final con el id del trabajo y sus respectivas observaciones, para despues recorrer te queda mas facil

Etiquetas: mysql+php, tablas, vincular
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 11:13.