Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta complicada (varias tablas)

Estas en el tema de Consulta complicada (varias tablas) en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/10/2008, 08:59
 
Fecha de Ingreso: octubre-2008
Mensajes: 14
Antigüedad: 15 años, 6 meses
Puntos: 0
Consulta complicada (varias tablas)

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!!
  #2 (permalink)  
Antiguo 09/10/2008, 15:57
 
Fecha de Ingreso: junio-2008
Mensajes: 1
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Consulta complicada (varias tablas)

hola, quiza necesites utilizar consultas un poco avanzadas donde incluyas los enlaces a varias tablas como inner join, left join.
seria algo como:

$consulta=mysql_query("select campo1.tabla1,campo1.tabla2 from(tabla1 inner join tabla2 on tabla1.campo=tabla2.campo1 ) where (condicion)");

algo parecido, no es tan complejo lo que tu necesitas lee sobre inner join o left join para las consultas cruzadas te serviran mucho
  #3 (permalink)  
Antiguo 10/10/2008, 02:13
 
Fecha de Ingreso: octubre-2008
Mensajes: 14
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consulta complicada (varias tablas)

Cita:
Iniciado por RCRC Ver Mensaje
hola, quiza necesites utilizar consultas un poco avanzadas donde incluyas los enlaces a varias tablas como inner join, left join.
seria algo como:

$consulta=mysql_query("select campo1.tabla1,campo1.tabla2 from(tabla1 inner join tabla2 on tabla1.campo=tabla2.campo1 ) where (condicion)");

algo parecido, no es tan complejo lo que tu necesitas lee sobre inner join o left join para las consultas cruzadas te serviran mucho

Muchas gracias!!! Ahora me he quedado atrancado aquí, y eso que todavía lo estoy intentando con dos tablas...

Le he cambiado id_user de la tabla profile_education a id_user_ed, ya que segun he leido es mejor que se llamen de forma diferente...

Aqui deberia mostrar a alguien con dicho nombre y universidad:

SELECT * FROM profile AS p
INNER JOIN profile_education AS e ON p.id_user=e.id_user_ed
WHERE p.first_name LIKE '%$first_name%'
AND e.universtiy LIKE '%$universtiy%'


Alguien puede orientarme por favor??? :)
  #4 (permalink)  
Antiguo 13/10/2008, 02:57
 
Fecha de Ingreso: octubre-2008
Mensajes: 14
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consulta complicada (varias tablas)

nadie puede ayudarme??

por favor...
  #5 (permalink)  
Antiguo 13/10/2008, 03:38
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.
  #6 (permalink)  
Antiguo 16/10/2008, 03:43
 
Fecha de Ingreso: octubre-2008
Mensajes: 14
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consulta complicada (varias tablas)

muchas gracias jurena, el codigo es totalmente lo que buscaba.

Como bien dices, ahora me encuentro con problemas a la hora de mostrar los datos, o quizás a la hora de utilizar el INNER JOIN con php, porque no consigo mostrarlos... He dejado un post en el foro de php.

Lo dicho, muchas gracias de verdad!
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 21:05.