WaN*_*WaN 6 sql firebird firebird2.1 jointable
我有2个fdb数据库company.fdb和timeAtt.fdb
company.fdb包含staffDetail表格
staffId - 001
staffName - Andy
staffStatus - Active
Run Code Online (Sandbox Code Playgroud)
timeAtt.fdb包含staffAtt表格
staffId - 001
staffName - Andy
timeIn - 07:30
timeOut - 04:30
LI - X (late in)
AB - X (absent )
remarks - Emergency leave
Run Code Online (Sandbox Code Playgroud)
现在,我想查看那些只是我缺席的工作人员
SELECT staffId,staffName,remarks FROM timeAtt.fdb WHERE AB = 'X'
Run Code Online (Sandbox Code Playgroud)
但问题是,查询还显示非活动人员.所以我需要参加staffAtt由timeAtt.fdb和staffDetail从company.fdb活跃状态,仅显示的工作人员.我怎样才能做到这一点?
如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
Run Code Online (Sandbox Code Playgroud)
你不能。在 Firebird 中,您只能连接同一数据库文件中的表。Firebird 2.5 扩展EXECUTE STATEMENT为还可以在外部数据源上执行语句,但在不同数据库中使用单个查询引用表是不可能的。
您有以下选择: