簡體   English   中英

如何連接兩個 Firebird 數據庫中的表?

[英]How to join tables in two Firebird databases?

目前我正在使用 Embarcadero C++Builder 10.3 社區版和 Firebird 和 FlameRobin 來創建一個簡單的庫項目來創建數據庫。

到目前為止,我只需要使用連接到單個數據庫的簡單查詢。 因此,我使用TFDConnectionTFDPhysFbDriverLink連接到.fdb文件。 然后, TFDQuery創建 SQL 命令和TDataSource 它工作得很好。

不幸的是,現在我必須加入兩個表。 這個命令怎么寫? 我試過這個:

SELECT * FROM users_books 
join books on
users_books.id_book = books.id

其中users_booksbooks是數據庫。

我收到一個錯誤:

SQL error code = -204
Table unknown
BOOKS.

所以我認為我必須以某種方式同時連接到這兩個數據庫。 怎么做?

Firebird 數據庫是孤立的,不知道其他數據庫。 因此,無法使用正常的select語句跨數據庫連接表。

您可以做的是使用 PSQL(過程 SQL),例如在EXECUTE BLOCK中。 然后,您可以使用FOR EXECUTE STATEMENT... ON EXTERNAL來循環另一個數據庫中的表,然后使用FOR SELECT (反之亦然)“手動”連接本地表。

例如(假設遠程數據庫中有一個表user_books ,當前數據庫中有一個表books ):

execute block
  returns (book_id integer, book_title varchar(100), username varchar(50))
as
begin
  for execute statement 'select book_id, username from user_books'
    on external 'users_books' /* may need AS USER and PASSWORD clause as well */
    into book_id, username do
  begin
    for select book_title from books where id = :book_id
      into book_title do
    begin
      suspend;
    end
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM