Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/08/2005, 06:15
Avatar de KarlanKas
KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 2 meses
Puntos: 61
Busqueda a tres bandas en una sola consulta

Hola a todos!

Tengo un pequeño problema con 3 tablas. He estado saturando un poco la base de datos de los foros (perdona Christian) buscando hilos que trataran sobre esto, y no he encontrado nada parecido (creo que es porque no he sabido como preguntarlo).


Tengo 3 tablas: una llamada personas que contiene diversos datos personales de distintos seres bípedos, otra llamada proyectos que contiene datos técnicos y una tercera llamada rel_personas_y_proyectos cuyos registros son de 3 campos: persona, proyecto y relación. En cada registro se pone el personas.id, el proyectos.id y la relación (en el campo relación) que tienen entre sí.

El problema surge cuando tengo que poner una lista de todos los proyectos conteniendo datos de la tabla proyectos y de la tabla personas del registro de la persona que interviene en dicho proyecto como promotor (es un tipo de relación en la tabla de relacion_personas_y_proyectos).

Los datos que tendría que sacar serian: ubicacion y expediente de la tabla proyectos y nombre y apellidos del promotor de la tabla de personas.

Me gustaría hacerlo en una sola consulta. ¿Sería posible? He hecho cosas parecidas con dos tablas, pero no con tres...

Por ahora tengo:

SELECT id,expediente,ubicacion FROM personas ORDER BY expediente

y luego por cada resultado hago

SELECT persona FROM rel_personas_y_proyectos WHERE relacion="promotor" AND proyecto=$resultado['id']

Siendo $resultado['id'] el campo id de la tabla personas que toque en ese momento. Y siendo persona el campo de la tabla rel_personas_y_proyectos en la que se hace referencia al id del registro de la tabla personas donde se guardan los datos de la persona en cuestión.

Y luego ya saco los datos de la tabla personas:

SELECT nombre,apellidos FROM personas WHERE id=$resultado2['persona']

Como veis es un montón de consultas. Seguro que hay una forma, pero soy muy pez en esto. Me podeis ayudar?

P.D.- Para ayudar a entenderme he puesto los nombres de los campos de las tablas en color azul y el nombre de las tablas en rojo.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.