Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/05/2011, 14:33
vjrosk
 
Fecha de Ingreso: diciembre-2010
Mensajes: 35
Antigüedad: 13 años, 4 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!