2017-08-25 111 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