Bueno, pues ya he probado Firebird 2.5 y he de decir que
sí se puede hacer un SELECT a otra base de datos distinta, gracias a la expresión ON EXTERNAL DATA SOURCE, poniendo la ruta de la base de datos, el usuario y la contraseña. Pero mucho me temo que unir tablas (JOIN) de bases de datos distintas todavía no se puede
pero bueno es un comienzo.
Habrá que seguir con las tablas temporales, claro que ahora se hace mucho más rápido (con un cursor, en un SP por ejemplo) que antes recorriendo con código Delphi las IBQuery y haciendo un INSERT registro a registro. Sería una cosa tal que así:
Código SQL
[-]DECLARE VARIABLE C1 INTEGER;
DECLARE VARIABLE C2 INTEGER;
BEGIN
FOR
EXECUTE STATEMENT 'SELECT CAMPO1, CAMPO2 FROM TABLA WHERE CAMPO1 = 50'
ON EXTERNAL DATA SOURCE '192.168.X.X:/RUTA/BASEDATOS.GDB'
AS USER 'SYSDBA' PASSWORD 'masterkey'
INTO :C1, :C2
DO
INSERT INTO TABLA_TEMPORAL (CAMPO1, CAMPO2) VALUES (:C1, :C2);
END
Y posteriormente ya podríamos unir una tabla con la temporal que tiene los registros de la otra base de datos.
Aquí tenéis más información sobre el tema. También pone cómo hacer un simple SELECT para visualizar datos de otra base de datos mediante la sentencia EXECUTE BLOCK.