Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 запутался с курсорами, хелп плз  [new]
Gogachka
Member

Откуда:
Сообщений: 47
День добрый!
Есть задача, нужно создать VEIW, который объединяет данные с нескольких таблиц, таблиц много, соответственно таких VEIW-ев тоже должно быть по количеству таблиц.
Речь идет о данных из несколькох баз. Названия баз данных занесены в таблицу 'DB_to_union', существует вторая таблица с названиями таблиц, которые нужно объединить 'Tables_to_union', во всех базах из 'DB_to_union' одноименные таблицы имеют одинаковую структуру, и третья таблица 'Columns_to_union' из двух полей: имя таблицы и имя колонок, которые нужно соединить.

Например, первая таблица с названиями баз 'DB_to_union':
DB_name
db_1
db_2
db_3



вторая таблица 'Tables_to_union':
Tbl_name
tbl_1
tbl_2
tbl_3


и третья таблица 'Columns_to_union':
Tbl_name Col_name
tbl_1 a
tbl_2 aa
tbl_2bb
tbl_3 xxx
tbl_3yyy
tbl_3zzz


в этом примере должны получить :
1)
Create view v_tbl_1
as
select a from db_1.tbl_1
union select a from db_2.tbl_1
union select a from db_3.tbl_1

2)
Create view v_tbl_2
as
select aa,bb from db_1.tbl_2
union select aa,bb from db_2.tbl_2
union select aa,bb from db_3.tbl_2

3)
Create view v_tbl_3
as
select xxx,yyy,zzz from db_1.tbl_3
union select xxx,yyy,zzz from db_2.tbl_3
union select xxx,yyy,zzz from db_3.tbl_3

Понимаю, что нужно сделать курсор по таблицам, потом по базам, но не могу соединить все в один скрипт, чтоб получилось VIEW :(
6 дек 09, 16:46    [8025452]     Ответить | Цитировать Сообщить модератору
 Re: запутался с курсорами, хелп плз  [new]
SanSYS
Member

Откуда: http://www.sansys.net/
Сообщений: 1879
а разве можно создавать вьюшки для таблиц из разных баз данных?

как разрешите проблему - отпишитесь плиз, оч любопытно

блог
6 дек 09, 17:35    [8025567]     Ответить | Цитировать Сообщить модератору
 Re: запутался с курсорами, хелп плз  [new]
Taffy
Member

Откуда:
Сообщений: 20498
SanSYS,

можно
6 дек 09, 17:38    [8025574]     Ответить | Цитировать Сообщить модератору
 Re: запутался с курсорами, хелп плз  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SanSYS
а разве можно создавать вьюшки для таблиц из разных баз данных?

как разрешите проблему - отпишитесь плиз, оч любопытно

блог
Почитайте:
Секционированные представления
Федеративные серверы баз данных
Секционированные таблицы и индексы SQL Server 2005
Gogachka
в этом примере должны получить :
1)
Create view v_tbl_1
as
select a from db_1.tbl_1
union select a from db_2.tbl_1
union select a from db_3.tbl_1

2)
Create view v_tbl_2
as
select aa,bb from db_1.tbl_2
union select aa,bb from db_2.tbl_2
union select aa,bb from db_3.tbl_2

3)
Create view v_tbl_3
as
select xxx,yyy,zzz from db_1.tbl_3
union select xxx,yyy,zzz from db_2.tbl_3
union select xxx,yyy,zzz from db_3.tbl_3
Странно. А про схемы что-нибудь слышали?
В db_1.tbl_1 db_1 - это база данных, да?
6 дек 09, 17:58    [8025606]     Ответить | Цитировать Сообщить модератору
 Re: запутался с курсорами, хелп плз  [new]
Gogachka
Member

Откуда:
Сообщений: 47
iap,

про схемы слышал, но к сожалению, по моему схемы и select * не подходят :(
мне не нужны все поля таблиц, а только указанные в 'Columns_to_union', при этом там могут быть вычисляемые поля

Да, db_1 это база данных

Спасибо!
6 дек 09, 18:06    [8025614]     Ответить | Цитировать Сообщить модератору
 Re: запутался с курсорами, хелп плз  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Gogachka
iap,

про схемы слышал, но к сожалению, по моему схемы и select * не подходят :(
мне не нужны все поля таблиц, а только указанные в 'Columns_to_union', при этом там могут быть вычисляемые поля
Я балдею!
На Вашем месте я полез бы в документацию.
Gogachka
Да, db_1 это база данных
А вот сервер и я считаем, что это схема, а не база данных!
6 дек 09, 18:14    [8025628]     Ответить | Цитировать Сообщить модератору
 Re: запутался с курсорами, хелп плз  [new]
Gogachka
Member

Откуда:
Сообщений: 47
iap,

сорри, должно быть:
1)
Create view v_tbl_1
as
select a from db_1..tbl_1
union select a from db_2..tbl_1
union select a from db_3.tbl_1

2)
Create view v_tbl_2
as
select aa,bb from db_1..tbl_2
union select aa,bb from db_2..tbl_2
union select aa,bb from db_3..tbl_2

3)
Create view v_tbl_3
as
select xxx,yyy,zzz from db_1..tbl_3
union select xxx,yyy,zzz from db_2..tbl_3
union select xxx,yyy,zzz from db_3..tbl_3
6 дек 09, 18:18    [8025637]     Ответить | Цитировать Сообщить модератору
 Re: запутался с курсорами, хелп плз  [new]
SanSYS
Member

Откуда: http://www.sansys.net/
Сообщений: 1879
iap
[quot SanSYS]а разве можно создавать вьюшки для таблиц из разных баз данных?

как разрешите проблему - отпишитесь плиз, оч любопытно

блог
Почитайте:
Секционированные представления
Федеративные серверы баз данных
Секционированные таблицы и индексы SQL Server 2005

да, спасибо, интересный материал, я как то и не обратил внимание на то что перед названием таблиц ет dbo, со схемами 1 раз работал и оч давно, да и вообще в этом разделе форума я в основном читатель, гоняюсь за знаниями по маленьку, спасибо! :)
6 дек 09, 18:50    [8025698]     Ответить | Цитировать Сообщить модератору
 Re: запутался с курсорами, хелп плз  [new]
Gogachka
Member

Откуда:
Сообщений: 47
так и не разобрался :(, как можно записать через запятую имена полей для селекта? (из третей таблицы)
7 дек 09, 10:12    [8026641]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить