один запрос на 2 БД
От: Korablik Украина  
Дата: 25.10.06 07:53
Оценка:
подскажите, плиз, у меня часть информации находится в одной базе, а часть в другой, я хочу это выводить всё вместе. Как мне сделать чтоб был один запрос на 2 БД?

25.10.06 12:36: Перенесено модератором из 'Java' — Blazkowicz
Re: один запрос на 2 БД
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 25.10.06 07:56
Оценка:
Здравствуйте, Korablik, Вы писали:

K> подскажите, плиз, у меня часть информации находится в одной базе, а часть в другой, я хочу это выводить всё вместе. Как мне сделать чтоб был один запрос на 2 БД?


ЕСЛИ сама СУБД не поддерживает кросс-запросы, то никак. Oracle и Informix точно знаю поддерживают.
Re[2]: один запрос на 2 БД
От: Korablik Украина  
Дата: 25.10.06 07:57
Оценка:
Здравствуйте, Lucker, Вы писали:

L>ЕСЛИ сама СУБД не поддерживает кросс-запросы, то никак. Oracle и Informix точно знаю поддерживают.


SQL 2005
Re: один запрос на 2 БД
От: an-392  
Дата: 25.10.06 08:16
Оценка:
Здравствуйте, Korablik, Вы писали:

K> подскажите, плиз, у меня часть информации находится в одной базе, а часть в другой, я хочу это выводить всё вместе. Как мне сделать чтоб был один запрос на 2 БД?

Простое решение — проксировать либо оборачивать Connection/Statement/ResultSet с возможностью выполнения и возвращения запросов на/от N СУБД. Хотя мне это не кажется хорошим решением (как минимум не понятно что например делать c DatabaseMetaData). т.е. нужно хорошо обдумать варианты использования.
Re: один запрос на 2 БД
От: _PiT_ Россия ICQ: 68909455
Дата: 25.10.06 08:21
Оценка:
Здравствуйте, Korablik, Вы писали:

K> подскажите, плиз, у меня часть информации находится в одной базе, а часть в другой, я хочу это выводить всё вместе. Как мне сделать чтоб был один запрос на 2 БД?

ну вобщем тут уже всё правильно ответили.
всё будет от базы зависеть.
на оракле можно так:
— все данные находятся в двух разных схемах
— создаём третью схему, в которой прописываем синонимы на нужные объекты двух других схем (таблицы, вьюшки, процедуры)
— приложение работает с базой из-под третьей схемы и имеет доступ ко всем нужным ей данным

небольшой плюс от такого подхода: чёткое разделение прав доступа и возможность иметь несколько независимых схем в базе.
Твой учитель — это не тот, кто тебя учит, а тот, у кого учишься ты
(c) Записная книжка Дональда Шимоды
Re[2]: один запрос на 2 БД
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 25.10.06 08:22
Оценка:
Здравствуйте, an-392, Вы писали:

A3>Здравствуйте, Korablik, Вы писали:


K>> подскажите, плиз, у меня часть информации находится в одной базе, а часть в другой, я хочу это выводить всё вместе. Как мне сделать чтоб был один запрос на 2 БД?

A3>Простое решение — проксировать либо оборачивать Connection/Statement/ResultSet с возможностью выполнения и возвращения запросов на/от N СУБД. Хотя мне это не кажется хорошим решением (как минимум не понятно что например делать c DatabaseMetaData). т.е. нужно хорошо обдумать варианты использования.

ну так все-равно одним запросом не получится. Не думаю что возможно (за разумное время/деньги) написать прокси для ови драйвера, который бы разбирал запрос на составные запросы и выполнял их на разных субд, собирая несколько результатов затем в один.
Re[2]: один запрос на 2 БД
От: Korablik Украина  
Дата: 25.10.06 08:24
Оценка:
Здравствуйте, an-392, Вы писали:

A3>Простое решение — проксировать либо оборачивать Connection/Statement/ResultSet с возможностью выполнения и возвращения запросов на/от N СУБД. Хотя мне это не кажется хорошим решением (как минимум не понятно что например делать c DatabaseMetaData). т.е. нужно хорошо обдумать варианты использования.


элементы имеют одинаковый Id может как-нибуть на этом сыграть? Может написать 2 запроса и в GridView соединить их по Id? Вот поддержит ли это GridView? надо у него спросить )))
Re[3]: один запрос на 2 БД
От: an-392  
Дата: 25.10.06 08:28
Оценка:
Здравствуйте, Lucker, Вы писали:

L>ну так все-равно одним запросом не получится. Не думаю что возможно (за разумное время/деньги) написать прокси для ови драйвера, который бы разбирал запрос на составные запросы и выполнял их на разных субд, собирая несколько результатов затем в один.

А, не так понял условие. Я предполагал что запрос один, но выполнить его надо на 2-х серверах.
Re[3]: один запрос на 2 БД
От: pkarklin  
Дата: 25.10.06 08:39
Оценка:
Здравствуйте, Korablik, Вы писали:

K>Здравствуйте, Lucker, Вы писали:


L>>ЕСЛИ сама СУБД не поддерживает кросс-запросы, то никак. Oracle и Informix точно знаю поддерживают.


K>SQL 2005


BOL->linked servers
Re: один запрос на 2 БД
От: Korablik Украина  
Дата: 25.10.06 08:57
Оценка:
Здравствуйте, Korablik, Вы писали:

K> подскажите, плиз, у меня часть информации находится в одной базе, а часть в другой, я хочу это выводить всё вместе. Как мне сделать чтоб был один запрос на 2 БД?


Оказывается всё гениальное — просто, в SQL SERVER 2005 эта проблемма решается вот так:
1. перед "dbo" к второй базе, просто ставим имя второй
2. Второго пункта НЕТ

Всем спасибо
Re[4]: один запрос на 2 БД
От: pkarklin  
Дата: 25.10.06 09:00
Оценка:
Здравствуйте, pkarklin, Вы писали:

P>Здравствуйте, Korablik, Вы писали:


K>>Здравствуйте, Lucker, Вы писали:


L>>>ЕСЛИ сама СУБД не поддерживает кросс-запросы, то никак. Oracle и Informix точно знаю поддерживают.


K>>SQL 2005


BOL->>linked servers


Сорри, ступил. Показалось, что базы на разных серверах. А так используйте полные имена объектов database_name.owner.object.
Re[5]: один запрос на 2 БД
От: Korablik Украина  
Дата: 25.10.06 09:06
Оценка:
Здравствуйте, pkarklin, Вы писали:


P>Сорри, ступил. Показалось, что базы на разных серверах. А так используйте полные имена объектов database_name.owner.object.


Встречный вопрос: как это под одним СЕЛЕКТОМ записать ))))
Re[6]: один запрос на 2 БД
От: pkarklin  
Дата: 25.10.06 10:28
Оценка:
Здравствуйте, Korablik, Вы писали:

K>Здравствуйте, pkarklin, Вы писали:



P>>Сорри, ступил. Показалось, что базы на разных серверах. А так используйте полные имена объектов database_name.owner.object.


K>Встречный вопрос: как это под одним СЕЛЕКТОМ записать ))))


Если "это" — запрос к бд на разных серверах, то надо сначала прилинковать один к другому, а потом использовать в запросе:

SELECT
  *
FROM
  linked_server.database.dbo.table T1
  INNER JOIN ...
Re[7]: один запрос на 2 БД
От: Korablik Украина  
Дата: 25.10.06 12:02
Оценка:
Здравствуйте, pkarklin, Вы писали:

P>Если "это" — запрос к бд на разных серверах, то надо сначала прилинковать один к другому, а потом использовать в запросе:


P>
P>SELECT
P>  *
P>FROM
P>  linked_server.database.dbo.table T1
P>  INNER JOIN ...


ТОже верно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.