Foros del Web » Programando para Internet » PHP »

Problema con buscardor en dos tablas!!!

Estas en el tema de Problema con buscardor en dos tablas!!! en el foro de PHP en Foros del Web. Hola Tengo un problema con un buscador de resultado, éste tiene que buscar en dos tablas, ambas relacionadas. Este problema lo solucioné facilmente con subquerys, ...
  #1 (permalink)  
Antiguo 27/02/2006, 10:20
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 14 años
Puntos: 8
Problema con buscardor en dos tablas!!!

Hola

Tengo un problema con un buscador de resultado, éste tiene que buscar en dos tablas, ambas relacionadas.

Este problema lo solucioné facilmente con subquerys, pero al subir el script al hosting me percaté que el mysql del servidor es version 4.0.xx, razon el cual no soporta "Subquerys".

Dada ésta situación tengo que hacer ésto mediante php, pero no he podido dar con la solución

Haber si me pueden ayudar, la situacion es la siguiente:

Son dos tablas la de usuario (usuario es unico) y la tabla de experiencia laboral (el usuario puede tener mas de una experiencia laboral).

Tabla usuario:
id ( Lave primaria )
nombre
mail
password
etc...

Tabla Experiencia Laboral:

id_exp ( Lave primaria )
id_usuario` int(5) ( Llave estrangera de tabla usuarios)
nombre_empresa
cargo_empresa
fecha_inicio
fecha_fin
actual_cargo
descripcion_cargo

la idea es tener un join entre ambas tablas, pero que de la tabla experiencia laboral me entregue solo una experiencia laboral, que sea la última, ésto mediante mysql, solo lo pude hacer con subquerys(pero el hostin no lo soportó).

Ya que si en el buscador ingreso el nombre del usuario me va a repetir tantas veces el usuario como experiencias tenga y la idea es que solo me muetre ese usuario con su última experiencia laboral, pero a su vez que tambien busque en la tabla experiencia laboral, es decir tiene que buscar en ambas tablas y traerme el resultado del usuario y su ultima experiencia laboral ya sea que la palabra la encontró en la tabla del usuario o en su experiencia laboral.

Por el momento tengo lo siguente, pero el drama es que no me busca dentro de la experiencia laboral.

Código PHP:
    $search_query 'WHERE (us.nombre_usuario LIKE "%' $palabra_clave '%" OR us.apaterno_usuario LIKE "%' $palabra_clave '%" OR us.amaterno_usuario LIKE "%' $palabra_clave '%") ';

    
$result_busqueda_usuario mysql_query('SELECT     us.* FROM posters us '                                            
                    
$search_query .'order by id') or die (mysql_error());
                    
    
$busqueda_usuario = array();
    while(
$row mysql_fetch_assoc($result_busqueda_usuario))
    {
                    
$busqueda_usuario $row;
                            
    
$result_busqueda_exp_laboral mysql_query('SELECT     pel.* FROM prof_exp_laboral pel '                    
                    
.'WHERE id_usuario = \'' $busqueda_usuario['id'] . '\' ORDER BY id_exp DESC LIMIT 0,1') or die (mysql_error());

                    
$busqueda_exp_laboral = array();
                    
                    while(
$row mysql_fetch_assoc($result_busqueda_exp_laboral))
                    { 
                    
//aqui muestro el resultado
                    

solo busca en la tabla usuario, con eso obtendo el id del usuario y obtengo su experiencia laboral en un query separado y no se como buscar en ambas y muestre al usuario con su última experiencia laboral, ya sea que lo haya encontrado en la tabla usuario o en la de experiencia(que busque en el registro de la última experiencia).

espero haberme entendido bien.

Gracias. y saludos.


zsamer
  #2 (permalink)  
Antiguo 27/02/2006, 12:00
 
Fecha de Ingreso: enero-2006
Mensajes: 54
Antigüedad: 11 años, 11 meses
Puntos: 0
Hola, eso de que el MySql no soporte las SubConsultas ya me ha pasado pero el hecho es que si se pueden ejecutar los Inner Join que sirven para hacer consultas en varias tablas, no podria darte exatamente un modelo de como seria tu consulta porque la verdad te entiendo mucho, creo que me confunde eso de que tenga que buscar en ambas tablas y no se en si que tipo de criterio tomas para hacer tu busqueda, no se que es lo que contiene tu palabra clave.

una estructura del inner join podria ser algo asi:

$sql="Select A.campo1a, A.campo2a, B.campo1b, B.campo2b From Tabla1 A Inner Join Tabla2 B On A.PrimaryKeyTabla1=B.ForeignKeyTabla2 Where Condiciones";

Espero te sirva de algo. Bye.
  #3 (permalink)  
Antiguo 27/02/2006, 12:59
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 14 años
Puntos: 8
Cita:
Iniciado por csalazar146
Hola, eso de que el MySql no soporte las SubConsultas ya me ha pasado pero el hecho es que si se pueden ejecutar los Inner Join que sirven para hacer consultas en varias tablas, no podria darte exatamente un modelo de como seria tu consulta porque la verdad te entiendo mucho, creo que me confunde eso de que tenga que buscar en ambas tablas y no se en si que tipo de criterio tomas para hacer tu busqueda, no se que es lo que contiene tu palabra clave.

una estructura del inner join podria ser algo asi:

$sql="Select A.campo1a, A.campo2a, B.campo1b, B.campo2b From Tabla1 A Inner Join Tabla2 B On A.PrimaryKeyTabla1=B.ForeignKeyTabla2 Where Condiciones";

Espero te sirva de algo. Bye.
Gracias por responder, pero inner join o left join no me sirve ya que eso traerá todas las experiencias laborales del usuario, necesito que traiga sólo una experiencia laboral (la ultima ingresada), no todas, solo una.

la palabra clave es ingresada en un formulario y la idea es buscar en los campos del nombre, apellidos, profesión etc... en la tabla usuario y en los campo de descripción, cargo,empresa etc... de la tabla experiencia laboral.

otra idea!!!.

salu2

Última edición por zsamer; 27/02/2006 a las 13:04
  #4 (permalink)  
Antiguo 27/02/2006, 20:49
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 14 años
Puntos: 8
alguna idea!!!

espero ayuda, salu2
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 16:15.