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

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

Как выполнить запрос из результата запроса [D5]


rusa ©   (2003-02-04 13:55:00) 

Всем доброго дня!
Ребяты, я столкнулся со следующей проблемой:
Выбираю данные из ORACLE 8.1.7.4, но мне необходимо ёще
и проселектить имеющиеся данные от первого запроса. Я
не хочу создавать временных таблиц. Может кто знает способ
как это сделать? Работаю через BDE, но при выполнении второго
запроса BDE ищет файл в директории с exe-файлом. Конечно же его
там нет --> Ошибка: нет файла ..... и все стандартные расширения.

Я узнал способ, что можно с помощью SQL Explorer написать запрос
и сохранить его в папке с exe-файлом, а потом делать выборку из этого sql-файла. Он автоматически вернет данные и мой селект уже выберет из них. Но, мне такая схема не нравится. Должен же быть какой-то способ, что бы выбирать из уже выполненных селектов.

Если кто знает, поделитесь пожалуйста своим опытом!!!

:-)


ShuraGrp   (2003-02-04 15:31:00) [1]

Можно попробовать что-то типа virtual table. В RX и ODAC есть такие компоненты.


passm   (2003-02-04 14:31:00) [2]

AlexSerp © (04.02.03 14:27)> SQL и фильтра на НД - разные вещи.
Сохранишь ты данные на локальном диске. Но Oracle как ты его подсунешь?


AlexSerp   (2003-02-04 14:27:00) [3]

Дык, можно потом на том НД все получить с помощью фильтров.
И вроде как TClientDataSet позволяет сохранять данные на локальном диске.

Саня


passm   (2003-02-04 14:23:00) [4]

AlexSerp © (04.02.03 14:14)> Не подходит. Он SELECT над ним хочет делать.
rusa (04.02.03 14:13)> Получается, что тебе придется создавать локальные копии данных (DBase, Paradox...) и выполнять запрос над ними. Иначе, если делать запрос над двумя БД, то исполняться он будет на клиенте, что, мягко говоря, нехорошо. Ты уверен, что получишь экономию ресурсов?
IMHO надо идти по пути оптимизации БД и запросов, если хочешь экономить ресурсы.


rusa   (2003-02-04 14:18:00) [5]

А можно ли из TClientDataSet потом выбирать с помощью TQuery без применения всяких ухищрений?


AlexSerp   (2003-02-04 14:14:00) [6]

В таком случае не использовать ли TClientDataSet?

Саня


rusa   (2003-02-04 14:13:00) [7]

<-- select ... from (select ... from ...) -->

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


AlexSerp   (2003-02-04 14:07:00) [8]

select ... from (select ... from ...)
не помогает?

Саня


passm   (2003-02-04 14:07:00) [9]

rusa (04.02.03 13:55)> В твоем вопросе вижу переплетение:
1.TQuery.SQL.SaveToFile & TQuery.SQL.LoadFromFile - сомневаюсь, что ты спрашиваешь об этом, но напрашивается...
2.Если необходимо выполнить запрос над запросом, то
SELECT Q1.*, Q2.*
FROM (SELECT...) AS Q1(FIELD1, FIELD2...)
INNER JOIN Q2 ON (Q1.FIELD1 = Q2.FIELD1)
Это, разумеется, схема.


Наверх

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