Данные из двух баз.... как?

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
DenisV
Сообщения: 6
Зарегистрирован: 10 окт 2005, 09:53

Данные из двух баз.... как?

Сообщение DenisV » 10 окт 2005, 10:14

Короче поиск дал ответ что одним запросом нельзя...
Звиняйте если что... только зарегился и все не охватил...

имеются 2 gdb.
В одном данные с кодами. В другом расшифровка кодов.
Данные не мои (базу проектировал не я).
У разработчиков программы расшифровка показывается при клике на кнопке. Хочу в Дельфях написать просмотр без кодов напрямую в одной табличке... (т.е. получить данные из двух баз)

Как это сделать?
Посоветуйте!!!
Укажите путь!!! Дальше сам попробую....

Владимир Каратаев
Сообщения: 22
Зарегистрирован: 01 ноя 2004, 11:11

Сообщение Владимир Каратаев » 10 окт 2005, 10:33

вообще-то надо подробней писать. структуру БД, например. а у разработчиков сделано отдельно по клику понятно почему- в firebird низя сделать запрос одновременно к двум БД. так что либо БД сливай в одну, либо отдельными запросами к каждой БД.

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 10 окт 2005, 10:35

Как вариант 2 ибдатабэйза (соотв. 2 ибтранзакшн), к ним 2 ибквери (каждый к своей БД), да еще 2 датасорса, причем для второго квери, который будет показывать расшифровки родительским датасорсом указать первый датасорс, ну и разумеется запрос с параметром. Только это будет неодин грид со всем сразу, а грид с кодами и расшифровка для активной записи, при этом дополнительной кнопки для просмотра не потребуется.
Либо использовать не дбгрид, а что-то вроде стринггрида и сшивать вручную на клиенте.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 10 окт 2005, 10:39

одним запросом можно, только через BDE, и он делает это сам
www.ibase.ru/devinfo/bde.htm

DenisV
Сообщения: 6
Зарегистрирован: 10 окт 2005, 09:53

Сообщение DenisV » 10 окт 2005, 12:36

БД сливай в одну.
Не могу.... нельзя....


Как вариант.... сшивать вручную на клиенте.
Пробую изо всех сил... много глюков... да и "некрасиво" это как-то..
Но если не получится вернусь к этому варианту...

одним запросом можно, только через BDE...
Уже читаю.... Сэнкс...

DenisV
Сообщения: 6
Зарегистрирован: 10 окт 2005, 09:53

Сообщение DenisV » 10 окт 2005, 15:22

Короче вот что вышло.....
Создал 2 alias-а в BDEadministrator.
В одном для одной базы в другом для другой.
Драйвер INTRBASE.
Третий alias STANDARD.
В нем:
select a.nam_nu, b.nam
from
":base1:bs_nu" a inner join ":base2:bs_spr" b
on a.kd=b.kd
Все отлично сработало.
Затем на аналогичном запросе
select a.nam_nu, b.nam
from
":base1:ds_nu" a inner join ":base2:ds_spr" b
on a.kd=b.kd
Вылетает ошибка. Полез в SQLanalizer он показывает что на этапе
prepare он выбирает все поля из таблицы. А во втором варианте есть
дата изменения справочника. Так в общем и вылетает ошибка типа данных (тип DATE) для этого диалекта.
Где чего поменять или задать?

Видеть диалект можно в компоненте IBTable, но тогда предыдущее не
работает...

Блин, сорри за сумбур.. мОзги уже кипят...
Column unknown
DATV
Client SQL dialect 1 does not support reference to DATE datatype

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 10 окт 2005, 15:36

ыыыы. sqldialect в алиасе BDE настрой.
www.ibase.ru/ibfaq.htm#bde

DenisV
Сообщения: 6
Зарегистрирован: 10 окт 2005, 09:53

Сообщение DenisV » 11 окт 2005, 07:47

KDV! Святой человече....
Не "ыыыы-кай, плиииз!"
Уже читаюпросвещаюсь... :)

Однако в 3 диалекте ":base1:ds_nu" воспринимается как имя таблицы
и пишет, что такой таблицы нет...

Хэлп!!!

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 11 окт 2005, 09:47

погодь, алиас standard не должен воспринимать "диалект", я имел в виду один из алиасов IB. Попробуй сам пока, мне страсть как не хочется это проверять, как минимум до обеда.

DenisV
Сообщения: 6
Зарегистрирован: 10 окт 2005, 09:53

Сообщение DenisV » 11 окт 2005, 10:21

Да чет не тудыть... её растак...
Пишет Table does not exist.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 11 окт 2005, 10:36

смотри в sql monitor что уходит в алиас БД в третьем диалекте. Если там имя таблицы обрамляется двойными кавычками, так укажи ее имя в точном соответствии с регистром букв, с каким она была создана.

DenisV
Сообщения: 6
Зарегистрирован: 10 окт 2005, 09:53

Сообщение DenisV » 11 окт 2005, 10:48

Ах итить.....
Заработала!!!
Если имя таблицы писать не так как видно а как создавал...
Ну зачем он ВСЕ поля анализирует а не те что выбираю...
тормозуха такая...

Ладно, огрмоное сэнкс!!! буду думать дальше....

О сколько нам открытий чудных
готовит просвещения дух...

prvlad
Сообщения: 1
Зарегистрирован: 17 окт 2005, 17:47

Сообщение prvlad » 17 окт 2005, 17:49

Это все дико интересно, особенно BDE :)) А вот через адо, работая через IB Provider никто не пытался такое сделать ?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 17 окт 2005, 19:32

через IBProvider можно из MS SQL обращаться к IB/FB. это уже давно у них работает, и многие пользуются этой фичей. На сайте ibprovider.com есть пример. Вроде бы и из Оракла так же можно.

Ответить