Joining tables from different databases
The following example illustrates how to join two tables from different databases:
execute ibeblock (iii integer, ivc varchar(100)) returns (id integer, ename varchar(100), company varchar(100)) as begin -- drop database 'localhost/3060:c:\db1.fdb' user 'SYSDBA' password 'masterkey' clientlib 'C:\Program Files\Firebird\bin\fbclient.dll'; -- drop database 'localhost/3060:c:\db2.fdb' user 'SYSDBA' password 'masterkey' clientlib 'C:\Program Files\Firebird\bin\fbclient.dll'; create database 'localhost/3060:c:\db1.fdb' user 'SYSDBA' password 'masterkey' page_size 4096 sql_dialect 3 clientlib 'C:\Program Files\Firebird\bin\fbclient.dll'; create database 'localhost/3060:c:\db2.fdb' user 'SYSDBA' password 'masterkey' page_size 4096 sql_dialect 3 clientlib 'C:\Program Files\Firebird\bin\fbclient.dll'; create connection db1 dbname 'localhost/3060:c:\db1.fdb' password 'masterkey' user 'SYSDBA' clientlib 'C:\Program Files\Firebird\bin\fbclient.dll'; create connection db2 dbname 'localhost/3060:c:\db2.fdb' password 'masterkey' user 'SYSDBA' sql_dialect 3 clientlib 'C:\Program Files\Firebird\bin\fbclient.dll'; use db1; vstmt = 'create table "employees" ( ' || ' id integer not null primary key, full_name varchar(100), company_id integer)'; execute statement :vstmt; commit; use default; select count(*) from help_items into :icount; use db1; insert into "employees" (id, full_name, company_id) values (1, 'Alexander Khvastunov', 2); insert into "employees" (id, full_name, company_id) values (2, 'Bill Gates', 1); insert into "employees" (id, full_name, company_id) values (3, 'John Doe', NULL); insert into "employees" (id, full_name, company_id) values (4, 'Vladimir Putin', 3); insert into "employees" (id, full_name, company_id) values (5, 'Somebody', 15); use db2; execute statement 'create table companies ( id integer not null primary key, company_name varchar(100))'; commit; insert into companies (id, company_name) values (1, 'Microsoft'); insert into companies (id, company_name) values (2, 'HK-Software'); insert into companies (id, company_name) values (3, 'The Kremlin?'); commit; use db1; for execute statement 'select id, full_name, company_id from "employees"' into :id, :ename, :cid do begin use db2; company = NULL; select company_name from companies where id = :cid into :company; suspend; end close connection db1; close connection db2; end
back to top of page
<< Default Block adapted to include domains | IBEBlock | Recreating indices 1 >>