2009-02-27 3 views
0

У меня есть отдельная база данных для каждого департамента. У меня есть список всех отделов в таблице основных баз данных. Вся база данных называется a1, a2 и т. Д. Теперь я хочу получить деталь сотрудника из всех каф databses, возвращаемые query.pls помочь мнеMS Sql Server 2000: несколько запросов к базе данных

ответ

4

что-то вроде:

select <columnlist>, '[databasename1]' AS dbname 
    from [databasename1].[owner].[table or view name] 
UNION 
select <columnlist>, '[databasename2]' AS dbname 
    from [databasename2].[owner].[table or view name] 
UNION 
select <columnlist>, '[databasename3]' AS dbname 
    from [databasename3].[owner].[table or view name] 

Реализация:

DECLARE @DBTable TABLE (ID INT, DBName VARCHAR(20), DBOwner VARCHAR(10)) 
INSERT INTO @DBTable 
SELECT 1, 'a1', 'dbo' UNION 
SELECT 2, 'a2', 'dbo' UNION 
SELECT 3, 'a3', 'dbo' UNION 
SELECT 4, 'a5', 'dbo' 

DECLARE @Table VARCHAR(100), @Columns VARCHAR(500), @SQL VARCHAR(8000) 
SELECT @Table = 'Emloyee', @Columns = 'ID, Name, Phone', @SQL = '' 
SELECT @SQL = @SQL + ' 
SELECT '[email protected]+', '''+DBName+''' AS Database FROM ['+DBName+'].['+DBOwner+'].['[email protected]+'] UNION' 
FROM @DBTable 
SET @SQL = SUBSTRING(@SQL, 0, LEN(@SQL) - 5) 
EXEC(@SQL) 
1

Вы можете получить таблицы по блокам данных, как это: -

SELECT * FROM a1..Employee 
UNION ALL 
SELECT * FROM a2..Employee 
Смежные вопросы