En realidad, medio te estás ahogando en un dedal... No es tan complicado como te parece.
Sin conocer exactamente las tablas involucradas es difícil darte una sintaxis concreta, pero la idea sería:
Código MySQL:
Ver originalSELECT 'Interno' OrigenDoc
, A.
*, B.
* WHERE A.campoorigen
= 'I' AND (otras condiciones
) SELECT 'Externo' OrigenDoc
, A.
*, C.
* WHERE A.campoorigen
= 'E' AND (otras condiciones
) ...
...
La idea es simple: si de cada subconjunto estás obteniendo iguales datos, simplemente haces todas las búsquedas al mismo tiempo, uniendo los resultados. Aquella consulta que no obtenga datos, simplemente no aparecerá.
La primer columna la puse solamente para forzar la aparición de un texto indicativo de qué tabla origen tiene el dato obtenido. Ni no la quieres, quitala.