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.