Hola JeMaGa:
al tener varios campos relacionados con la misma tabla puedes hacer varios INNER JOIN sobre esa tabla, utilizando un alias distinto para cada campo. creo que queda más claro con el ejemplo:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.10 sec)
-> (1, 'persona uno', 'cargo uno', 'area uno'),
-> (2, 'persona dos', 'cargo dos', 'area dos'),
-> (3, 'persona tres', 'cargo tres', 'area tres');
Query OK, 3 rows affected (0.08 sec)
+-------------+----------------+---------------+-----------+
| Cod_Persona
| Nombre_Persona
| Cargo_Persona
| AREA | +-------------+----------------+---------------+-----------+
| 1 | persona uno
| cargo uno
| area uno
| | 2 | persona dos
| cargo dos
| area dos
| | 3 | persona tres
| cargo tres
| area tres
| +-------------+----------------+---------------+-----------+
-> Elabora
INT, Fecha_Elabora
DATE, -> Aprueba
INT, Fecha_Aprueba
DATE); Query OK, 0 rows affected (0.23 sec)
-> 1, '2011-07-19',
-> 2, '2011-07-20',
-> 3, '2011-07-21');
Query OK, 1 row affected (0.07 sec)
mysql
> SELECT cod_doc
, elabora
, revisa
, aprueba
FROM firmas
;+---------+---------+--------+---------+
| cod_doc | elabora | revisa | aprueba |
+---------+---------+--------+---------+
| 1 | 1 | 2 | 3 |
+---------+---------+--------+---------+
mysql
> SELECT f.cod_doc
, p1.nombre_persona elabora
, -> p2.nombre_persona revisa
, p3.nombre_persona aprueba
FROM firmas f
-> INNER JOIN personas p1
ON f.elabora
= p1.cod_persona
-> INNER JOIN personas p3
ON f.aprueba
= p3.cod_persona
; +---------+-------------+-------------+--------------+
| cod_doc | elabora | revisa | aprueba |
+---------+-------------+-------------+--------------+
| 1 | persona uno | persona dos | persona tres |
+---------+-------------+-------------+--------------+
Observa que estoy haciendo 3 JOINS con la tabla personas, pero cada uno tiene un alias diferente, así puedo ligar cada campo por separado.
Dale un vistazo para ver si te sirve.
Saludos
Leo.