Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/10/2008, 03:38
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta complicada (varias tablas)

Cita:
Iniciado por Toni85 Ver Mensaje
Hola buenas. Soy un principiante en esto de PHP y MySQL y bueno, estoy montando una web donde se incluyen perfiles. Cada persona puede incluir varias experiencias en empresas y varios registros de su educación.

La base de datos la tengo asi:

TABLE PROFILE
id_user
first_name
last_name
(+)...

TABLE PROFILE_EDUCATION
id_education
id_user
university
(+)...

TABLE PROFILE_EXPERIENCE
id_experience
id_user
company
(+)...

Ahora bien, me han pedido realizar un formulario buscador (ya lo tengo implementado) donde se escriba por ejemplo el nombre y la universidad, o el nombre y la empresa (company) donde trabajó y aparezcan datos de esa persona.

Y he estado intentando pero solo consigo mostrar los resultados de la tabla profile y no se como hacer para buscar en las 3 a la vez...

Ojalá alguien pueda ayudarme... Gracias por adelantado!!
Toni85,
Tendrás que resolver varias cosas. La primera sí tiene que ver con bases de datos y podremos ayudarte aquí. Me refiero a una consulta

Código sql:
Ver original
  1. SELECT PROFILE.first_name, PROFILE.last_name, PROFILE_EDUCATION.university,  PROFILE_EXPERIENCE.company
  2. FROM PROFILE INNER JOIN PROFILE_EDUCATION ON PROFILE.id_user = PROFILE_EDUCATION.id_user
  3. INNER JOIN PROFILE_EXPERIENCE ON PROFILE.id_user= PROFILE_EXPERIENCE.id_user
  4. WHERE PROFILE_EDUCATION.university LIKE 'Universidad de Extremadura' OR PROFILE_EXPERIENCE.company LIKE '%Seguros%'
  5. ORDER BY PROFILE.last_name

Esto te mostrará el nombre y apellido de los que se han formado en esa universidad o bien los que han trabajado en una compañía cuyo nombre tiene la palabra seguro dentro de esa cadena. Pero eso no deja de ser una consulta con cruce de datos mediante inner join y con dos parámetros de búsquedas unidos por OR, ordenados por apellido. Si quieres hacer un selector con consultas para buscar por varios campos, dejando o no vacíos otros, tendrás que pedir también ayuda en foros de hmtl y programación, en uno para trabajar con selectores y en otro para manejar la cadena de consulta (hacerla más o menos larga) según los criterios elegidos.

Aprende primero a hacer bien las consultas usando ese cruce de tablas mediante INNER JOIN (o usando también, como te recomendaron, LEFT JOIN, según necesidades). Luego una vez que veas el funcionamiento, pasas a la segunda fase. Ese es mi consejo.