Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL-запрос из двух БД [D6, Paradox]


Страницы:   1 2

Spooky ©   (2002-09-09 12:54:00) 

Есть две БД (точнее две совокупности таблиц Paradox) и такой SQL-запрос:
SELECT Instr.Allsizes.Sign as Oboz,
Instr.Allsizes.Sign+" "+Instr.Contents.Short_name as Perex
FROM Instr.Allsizes, Instr.Contents
WHERE Instr.AllSizes.UID=CurrentWork.Konstr.RI_ID
Т.е. таблицы Alsizes и Contents находятся по алиасу Instr, а таблица Konstr по алмасу CurrentWork. Когда я этот запрос пишу в Query (свойство DatabaseName="") и делаю Active, Delphi ругается, чо не может найти файл "...Delphi6\Projects\Instr.AllSIzes.db", т.е. он ищет в текущем каталоге (дельфовском) файл Instr.AllSizes, как алиас Instr не воспринимает. В чем моя ошибка?
Заранее спасибо.


Spooky   (2002-09-10 11:35:00) [1]

Мне правда в одном месте все равно надо не алиас, а путь писать - путь корректно не обрабатывается, т.к. там двоеточие после буквы диска. А создавать для одного запроса алиас (в смысле программно) не хочется.


Виталий Панасенко   (2002-09-10 08:42:00) [2]

Вообще-то синтаксис алиас-таблица действительно такой, как написал Дмитрий Орехов ":alias:table". Должно все работать, если больше нигде не накрутил.:-)))


Spooky   (2002-09-10 07:56:00) [3]

Не поверите, но сегодня последний вариант сегодня заработал (видимо у меня на машинке BDEглючит), а вчера писал, что таблицу найти не может - неверное имя файла.
Большущее спасибо Дмитрию Орехову и вообще всем спасибо.


Дмитрий Орехов   (2002-09-10 06:52:00) [4]

На что ругается при пследнем варианте запроса?


Anatoly Podgoretsky   (2002-09-09 16:28:00) [5]

Если не чего не получается, то самое время посмотреть документацию по Local SQL и по гетерогенным запросом.
VAL уже полтора часа уговаривает сделать естественное движение.


Spooky   (2002-09-09 16:02:00) [6]

Так тоже не помагает.
К сожалению, вынуждена покинуть форум, вернусь завтра.
Спасибо за помощь.
Если какие-то еще мысли на этот счет возникнут, напишите - буду признательна, завтра посмотрю.


Дмитрий Орехов   (2002-09-09 15:55:00) [7]

а если так
SELECT a.Sign as Oboz,
(a.Sign+" "+c.Short_name) as Perex
FROM ":Instr:Allsizes.db" a, ":Instr:Contents.db" c,
":CurrentWork:Konstr" k
WHERE a.UID=k.RI_ID

можно еще попробовать все названия большими буквами


Spooky   (2002-09-09 15:50:00) [8]

Спасибо конечно, но только когда я пишу через двоеточие как у Вас, происходит ругательство "Invalid file name"


Дмитрий Орехов   (2002-09-09 15:37:00) [9]

Рабочий запрос:
Query.SQL.Text:="INSERT INTO ":PERENOS:NORMA_N_TEMP.DB""+
" SELECT * FROM ":NORMASERVER:NORMA_N_TEMP""+
" WHERE ACTUALYEAR="+#39+Year+#39+
" AND ACTUALMM="+#39+ComboMM.Text+#39+
" AND KODC="+#39+ComboC.Text+#39;

Одна таблица локальная, другая Oracle.


Spooky   (2002-09-09 15:36:00) [10]

Дмитрию Орехову

Может и вправду через двоеточие - спасибо за информацию. Но проблема осталась - не работает оно и все.


Дмитрий Орехов   (2002-09-09 15:29:00) [11]

там точно через двоеточия


Spooky   (2002-09-09 15:27:00) [12]

Простите, но сами таблицы сбросить не могу - во-первых, большие, а во-вторых - "коммерческая тайна".
Загвоздка здесь именно в обращении к двум БД, а не в таблицах.


Дмитрий Орехов   (2002-09-09 15:21:00) [13]

может бросишь пример вместе с таблицами?


Spooky   (2002-09-09 15:18:00) [14]

Дмитрию Орехову

CurrentWork.Konstr.RI_ID - здесь CurrentWork - алиас, Konstr - таблица, RI_ID - поле.
Проблема в том, что 2 таблицы (AllSizes и Contents) находятся в одной БД, а 3-тья таблица (Konstr) - в другой БД. На сколько я знаю, обращение к таблице через алиас пишется через точку, а не через двоеточие (я на всякий случай попробовала - все равно не работает).

То, что Вы написали, не имеет раздела WHERE, который мне необходим для условия.

А + работает, с этим я часто работаю.


Дмитрий Орехов   (2002-09-09 15:11:00) [15]

Извиняюсь:
from ":instr:allsizes" a, ":instr:contents" c


Дмитрий Орехов   (2002-09-09 15:07:00) [16]

Непонятно, что такое CurrentWork.Konstr.RI_ID
Если обе таблицы в одной БД, то соответствующий alias указывается в DatabaseName. Ну а если надо из разных БД, то там вроде такой формат ":alias:table". Вообще запрос какой-то кривой.

SELECT a.Sign as Oboz,
a.Sign+" "+c.Short_name as Perex
FROM Instr.Allsizes a, Instr.Contents c

не помню + будет работать или надо конкатинацию делать ||?


Spooky   (2002-09-09 15:00:00) [17]

>KDS
Проблема совсем не в этом, Делфи на ругается на указанный путь, где-то она там ключевое слово усматривает что ли. Я конечно попробывала таблицу Konstr в раздел FROM добавить, но это не дало никакого эффекта.

>Val
У меня на машинке нет Local SQL Help.


Val   (2002-09-09 14:48:00) [18]

>Spooky (09.09.02 14:28)
другие предложения были выше - посмотреть в хелп. поверьте, вопрос отпадет сам собой.


KDS   (2002-09-09 14:46:00) [19]

Ааа, ясно, теперь вижу лажу ... неусмотрел перед своим ответом:
А где - же потерялась третья таблица Konstr по алиасу CurrentWork?
Она тоже должна быть указана в строке
FROM Instr.Allsizes, Instr.Contents
и проверь взаимосвязи между таблицами в строке
WHERE Instr.AllSizes.UID=CurrentWork.Konstr.RI_ID
тут уже выпала таблица Instr.Contents


Spooky   (2002-09-09 14:28:00) [20]

На счет путей - это по совету KDS (см. сообщение выше).
А другие предложения есть?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо