![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL-запрос из двух БД [D6, Paradox]
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 (см. сообщение выше).
А другие предложения есть?