SQL SERVER 2008中如何跨越多个数据库取数,整合到一张新视图里面?
我有三个数据库A/B/C,数据库中都有共同的一张表Table,表中所有的列都相同(ID,CODE),我如何通过SQL语句把这三张表整合到一张视图里面,而且里面的三张表所有...
我有三个数据库A/B/C,数据库中都有共同的一张表Table,表中所有的列都相同(ID,CODE),我如何通过SQL语句把这三张表整合到一张视图里面,而且里面的三张表所有的列都需要,具体显示如下:A.Table.id A.Table.CODE B.Table.ID B.Table.CODE C.Table.ID C.Table.CODE
展开
1个回答
展开全部
本机数据库间的跨度,引用举例:
联合查询这两个表
select * from dbA.dbo.tb1 t1
left join dbB.dbo.tb2 t2 on t1.key1=t2.key2
关键:表明的前缀:dbA.dbo.tb1,即:数据库名.dbo.表名
计算机网络间数据库跨度,举例:
SELECT I.*, M.*
FROM OPENROWSET('SQLOLEDB', '192.168.10.2'; 'sa'; '123', [Database1].[dbo].[Table1]) I
INNER JOIN (
SELECT DISTINCT P.IPSAppID AppId, P.DepartmentId, C.CategoryId, T.Creator
FROM OPENROWSET
('SQLOLEDB', '192.168.10.1'; 'sa'; '123', [Database2].[dbo].[table2]) P LEFT JOIN (
SELECT DISTINCT LTRIM(DepartmentId) DepartmentId, UserName Creator
FROM OPENROWSET('SQLOLEDB', '192.168.10.1'; 'sa'; '123', [Database3].[dbo].[view1])
WHERE UserName IN
(SELECT DISTINCT Creator
FROM OPENROWSET('SQLOLEDB', '192.168.10.1'; 'sa'; '123', [Database1].[dbo].[Table1]) WHERE AppId = '8cefca00-9733-4976-951a-e19346603717' AND CategoryId = 'b14b4852-c0e4-4db6-a91e-704b699a8fa2')) T
ON P.DepartmentId = T.DepartmentId
LEFT JOIN OPENROWSET('SQLOLEDB', '192.168.10.1'; 'sa'; '123', [Database2].[dbo].[Table3]) C ON C.AppId = P.IPSAppID
WHERE P.ClassId IS NULL AND T.Creator IS NOT NULL AND C.CategoryName = 'activity') M
ON M.Creator = I.Creator
WHERE I.AppId = '8cefca00-9733-4976-951a-e19346603717' AND I.CategoryId = 'b14b4852-c0e4-4db6-a91e-704b699a8fa2'
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询