Foros del Web » Programando para Internet » PHP »

Consulta Multiple busqueda con un solo resulado para cada individuo

Estas en el tema de Consulta Multiple busqueda con un solo resulado para cada individuo en el foro de PHP en Foros del Web. Hola gente hace rato que no escribo pero estoy con un problemilla, estoy armando un buscador para una guia telefonica en php y mysql. Venia ...
  #1 (permalink)  
Antiguo 05/05/2011, 14:33
 
Fecha de Ingreso: diciembre-2010
Mensajes: 35
Antigüedad: 13 años, 11 meses
Puntos: 0
Consulta Multiple busqueda con un solo resulado para cada individuo

Hola gente hace rato que no escribo pero estoy con un problemilla, estoy armando un buscador para una guia telefonica en php y mysql. Venia por buen puerto hasta que me encontre con un problema, multiples tablas.. voy a tratar de ser mas especifico:

La busqueda es para individuos dentro de la empresa, la empresa posee 3 tablas con diferentes contenidos

1ra tabla: TODOS los empleados que estan/estubieron trabajando
2da tabla: los empleados de medio tiempo (por la mañana)
3ra tabla: los empleados de medio tiempo (por la tarde)

un empleado puede trabajar por la mañana, por la tarde o en ambos, algunos como son de tiempo parcial pueden tener varios cargos, OSEA 1 persona = 1 o muchos cargos.


solucion mia (no funciona del todo bien y aca se genera el conflicto)

1 - recorro la primer base para ver si esta persona que buscamos es empleado
2 - si es empleado lo busco en la segunda base (turno mañana), si es asi lleno la correspondiente matriz para la impresion (o pintada en el html)
3- si no esta en la 1er base lo busco en la 2da, si esta lleno la matriz


Problema: encuentro a las personas, pero si una persona tiene mas de un cargo, me la muestra tantas veces como cargo tenga. En lugar de eso solo deberia mostrarla una unica vez. (al menos en esta pagina).

los pongo el codigo y agradecere su ayuda!

$sql = "select * from pppd where $criterio ";

$db = conecto_archivo();
$r = pg_exec($sql);
if (!$r)
{
pg_close($db);
// echo 'query ....'.$sql;
gestion_errores();
}

pg_close($db);

while ($arr = pg_fetch_array($r)) //traigo todos los que encontre en pppd
{
$a_legajo = $arr[legajo]; //los guardo en una variable
$a_apeynom = $arr[apeynom];

if($a_legajo != 0) //si existe y no es esta contradado
{

$sql = "select * from pps where legajo = '$a_legajo' "; //busco en pps
$db16 = conecto_archivo();
$r16 = pg_exec($sql);

if (!$r16)
{
pg_close($db16);
gestion_errores();
}

pg_close($db16);

while ($c_perpresu = pg_fetch_array($r16))
{
$vale_perpresu = $c_perpresu[legajo]; //guardo los legajos de los que estan en pps

if($vale_perpresu == "$a_legajo")//si hay coincidencias las imprimo
{

$datos[$X][apeynom] = $a_apeynom;
$datos[$X][legajo] = $c_perpresu[legajo];
$datos[$X][docunro] = $c_perpresu[docunro];
$X++;

}else{//si no esta en pps

$sql = "select * from percontr where legajo = '$a_legajo' "; //busco en pctr
$db17 = conecto_archivo();
$r17 = pg_exec($sql);

if (!$r17)
{
pg_close($db17);
gestion_errores();
}
pg_close($db17);

while ($c_percontr = pg_fetch_array($r17))//si hay coincidencias las imprimo
{

$datos[$X][apeynom] = $a_apeynom;
$datos[$X][legajo] = $c_percontr[legajo];
$datos[$X][docunro] = $c_percontr[docunro];
$X++;
}

}
}
}

}

desde ya gracias!
  #2 (permalink)  
Antiguo 05/05/2011, 14:52
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Consulta Multiple busqueda con un solo resulado para cada individuo

Realizar una reunión entre tablas para ello, por ejemplo, suponiendo que tenemos las tres tablas cuyas claves primarias son el id_empleado:

Código SQL:
Ver original
  1. SELECT id_empleado, nombre
  2. FROM empleados INNER JOIN empleados_manana
  3. ON empleados.id=empleados_manana.id
  4. INNER JOIN empleados_tarde ON empleados_manana.id = empleados_tarde.id
  5. WHERE [condicion]
  #3 (permalink)  
Antiguo 06/05/2011, 09:56
 
Fecha de Ingreso: diciembre-2010
Mensajes: 35
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Consulta Multiple busqueda con un solo resulado para cada individuo

Hola alexg88, antes que nada muchas gracias por la pronta respuesta.
Esto es una modificacion a las bases, no? por que no soy el unico programador aca y se que hay varios programas que usan esas bases, esto podria complicarlos?
  #4 (permalink)  
Antiguo 06/05/2011, 10:14
Avatar de s00rk  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico
Mensajes: 238
Antigüedad: 14 años
Puntos: 48
Respuesta: Consulta Multiple busqueda con un solo resulado para cada individuo

Cita:
Iniciado por vjrosk Ver Mensaje
Hola alexg88, antes que nada muchas gracias por la pronta respuesta.
Esto es una modificacion a las bases, no? por que no soy el unico programador aca y se que hay varios programas que usan esas bases, esto podria complicarlos?
No lo que el esta haciendo es obtiendo directamente los datos con algo en comun que es el ID identificador del empleado ya solo faltaria la condicion para ver que es lo que deceas obtener.
  #5 (permalink)  
Antiguo 06/05/2011, 10:24
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Consulta Multiple busqueda con un solo resulado para cada individuo

Como que te ha dicho s00rk, no he modificado nada en la base de datos.

Sólo te he puesto un ejemplo de lo que puedes hacer que tendrás que modificar a tu gusto para tu base de datos.
  #6 (permalink)  
Antiguo 06/05/2011, 13:02
 
Fecha de Ingreso: diciembre-2010
Mensajes: 35
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Consulta Multiple busqueda con un solo resulado para cada individuo

probando, muchas gracias!!

Etiquetas: busquedas
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 14:44.