Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Вниз

В одном запросе несколько баз ...   Найти похожие ветки 

 
korvin ©   (2005-01-29 12:50) [0]

Можно ли использовать в одном запросе поля таблиц из разных баз данных? Есть поля по которым можно было бы установить связь и конечно нет проблем если таблицы в одной базе, а как поступить в данном случае?
Если есть возможность, приведите пожалуйста пример в общем виде.


 
Alexandr ©   (2005-01-29 12:58) [1]

нельзя.
Только собирать результирующую таблицу на клиенте.
Вот в BDE есть возможности для этого.
Но BDE в данном случае естественно убдет на клиентя тянуть таблицы целиком, даже если реально надо всего пару записей.
Аналогично делают например Access или даже MSSQL.


 
korvin ©   (2005-01-29 13:32) [2]

Спасибо за ответ, хоть он меня и не радует.
Буду создавать сборную как советуете.


 
Alexandr ©   (2005-01-29 13:56) [3]

это самый правильный вариант, раз уж действительно так надо.
И транзакциями управлять сможешь, и на сервер посылать сразу правильный запрос смоше, чтоб не тянуть все таблицы.


 
Anatoly Podgoretsky ©   (2005-01-29 14:16) [4]

Alexandr ©   (29.01.05 12:58) [1]
Сам придумал "Но BDE в данном случае естественно убдет на клиентя тянуть таблицы целиком"


 
Alexandr ©   (2005-01-29 14:21) [5]

а разве не так?
хочется посмотреть, как BDE раскрутит сложный гетерогенный  запрос в 2 запроса для разных серверов.


 
Anatoly Podgoretsky ©   (2005-01-29 14:52) [6]

Очень просто раскрутит, например select :alias1:Tbl1.Fld1 AS T1, :alias2:Tbl2.Fld1 AS T2 where T1.Fld1=T2.Fld1


 
Alexandr ©   (2005-01-29 15:00) [7]


> alias1:Tbl1.Fld1 AS T1, :alias2:Tbl2.Fld1 AS T2 where T1.Fld1=T2.Fld1


не... мы как будто про разное говорим...
у него же базы клиент-серверные и можно ожидать выполнеия запроса в каждую базу и локального объединения результата запросов. Однако BDE не будет использовать сервер для такого объединения, а объединит своим движком, а свой движок у него только с файловыми базами работает.
Значит он вытянет обе таблицы целиком и сам уже потом безовсяких индексов будет объединять их своим движком.

А чтобы как-то распараллелить запрос по максимуму на серверы и потом только собрать из 2 ограниченных выборок результат, это надо очень серьезную логику. И в BDE оно не укладывается.


 
Anatoly Podgoretsky ©   (2005-01-29 15:11) [8]

Вот именно запрос в каждую базу, а не перекачивание всей таблицы, как ты утверждал. На каждую T1 будут вытянута только те записи, которые нужны, с тем же ИД, а не вся таблица. Точно также будет и для одной базы. И насчет сервера обязательно будет его использовать, не умеет БДЕ работать напряму с файлами Интербейс, да его никто и не пустить к этим файлам. Ты не путай с файл серверными базами. Примерно это будет выглядеть так, для второй таблицы будет выполнен такой запрос SELECT FROM T2 WHERE fLD1 = значение из T1, никаких всех данных не потянет. Объединение конечно будет произведено локально.


 
Alexandr ©   (2005-01-29 15:20) [9]

хм... ну мож такой запрос развернет еще.
Но если чуть посложнее?


 
Rule ©   (2005-01-29 15:24) [10]

по этому поводу хорошая статья есть

http://ibase.ru/devinfo/bde.htm


 
Alexandr ©   (2005-01-29 15:31) [11]

точно. Помню же, где читал на этот счет.
А вывод тут  такой, что как в конкретном случае BDE выполнит запрос известно только BDE. И далеко не всегда это будет более-менее оптимально.
А локальный SQL у него достаточно примитивен.
Поэтому уж проще самому формировать.


 
Rule ©   (2005-01-29 15:36) [12]

Alexandr ©   (29.01.05 15:31) [11]
именно так, поэтому в данном случае оптимальный вариант - это программными методаим обходить эту проблемму, а вообще не должно возникать таких ситуаций, а если возникла, значит что-то неправильно спроектировано изначально ... ИМХО конечно ...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
4-1101829091
MAINUSER
2004-11-30 18:38
2005.02.27
Ошибка в работе с ReadDirectoryChangesW


14-1108030842
Andryk
2005-02-10 13:20
2005.02.27
Блин эти спамеры "№;%::*?:%;;.


14-1107745511
Думкин
2005-02-07 06:05
2005.02.27
С Днем рождения! 6 февраля


14-1107428519
ArMellon
2005-02-03 14:01
2005.02.27
Кому не лень...


3-1106319091
SMT
2005-01-21 17:51
2005.02.27
Смысл отдельных элементов свойства TADOQuery.FieldDefs





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский