我有2个fdb数据库company.fdb
和timeAtt.fdb
company.fdb
包含staffDetail
表
staffId - 001
staffName - Andy
staffStatus - Active
timeAtt.fdb
包含staffAtt
表
staffId - 001
staffName - Andy
timeIn - 07:30
timeOut - 04:30
LI - X (late in)
AB - X (absent )
remarks - Emergency leave
现在,我想查看那些只是我缺席的员工
SELECT staffId,staffName,remarks FROM timeAtt.fdb WHERE AB = 'X'
但问题是,查询还显示非活动人员。因此,我需要加入来自staffAtt
的{{1}}和来自timeAtt.fdb
的{{1}},以仅显示处于有效状态的员工。我怎么能这样做?
答案 0 :(得分:4)
正如Mark所说,你不能直接加入他们。但是你仍然可以使用DSQL语句来获得你想要的东西。
同时使用execute block
和execute statement
。这是一个样本。
execute block
returning (
staffId integer,
staffName varchar(100),
remarks varchar(100)
staffStatus varchar(10))
as
begin
for SELECT staffId, staffName, remarks
FROM timeAtt
WHERE AB = 'X'
into :staffId, :staffName, :remarks do begin
execute statement 'select staffStatus from company where staffId = ' || staffId
on external "your:connection:\string\and\db.fdb" as user FOO password BAR
into :staffStatus;
suspend;
end
end
答案 1 :(得分:2)
你做不到。在Firebird中,您只能在同一个数据库文件中连接表。 Firebird 2.5扩展EXECUTE STATEMENT
也可以在外部数据源上执行语句,但是不可能在不同的数据库中使用单个查询引用表。
您有以下选择: