我有 2 个 fdb 数据库 company.fdb
和 timeAtt.fdb
company.fdb
包含 staffDetail
table
staffId - 001
staffName - Andy
staffStatus - Active
timeAtt.fdb
包含 staffAtt
table 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
来自 timeAtt.fdb
和 staffDetail
来自 company.fdb
仅显示处于事件状态的员工。我怎样才能做到这一点?
最佳答案
正如马克所指出的,你不能直接加入他们。但是您仍然可以使用 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
关于SQL 查询连接来自不同 fdb 数据库的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30320955/