2017-08-25 33 views
0

我正在尝试跨多个数据库选择数据。我能够加入数据库,但我不知道如何动态声明哪个数据库来查询数据。从多个数据库中选择依赖于行值的数据

例如

SELECT 
    UID 
    ,ACCT 
    ,Comp 
FROM db1.dbo.tbl1 
    JOIN db2.dbo.tbl1 
     ON db2.dbo.tbl1.uid=db1.dbo.tbl1.uid 

问题在于它没有考虑到db1中定义了哪个压缩文件。 (comp = comp1,comp2,comp3)。依赖于补偿的值,查询应提供结果

(我敢肯定,下列哪项是错误)

SELECT 
    uid 
    ,acct 
    ,comp 
FROM 
    (case when comp='comp1' 
     then db2.dbo.tbl1 
     when comp='comp2' 
     then db3.dbo.tbl1 
     when comp='comp3' 
     then db2.dbo.tbl1 
    ) 

(Insert join clause) 
(Insert where clause) 
+1

从什么表是比较未来价值从你想用来琢磨哪个表加入? – nscheaffer

+0

@nscheaffer该值来自db1.dbo.tbl1.comp – BIGTONE559

回答

0

考虑联合查询

SELECT UID, ACCT, Comp 
FROM db1.dbo.tbl1 
JOIN db2.dbo.tbl1 
    ON db2.dbo.tbl1.uid = db1.dbo.tbl1.uid 
WHERE comp IN ('comp1', 'comp3') 

UNION 

SELECT UID, ACCT, Comp 
FROM db1.dbo.tbl1 
JOIN db3.dbo.tbl1 
    ON db3.dbo.tbl1.uid = db1.dbo.tbl1.uid 
WHERE comp='comp2' 
+0

谢谢!这似乎成功了。更新表格的值时可以使用相同的联合体吗? – BIGTONE559