![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выборка из выборки [D5, dBase, FoxPro]
Oleg_er © (2002-04-27 11:17:00)Можно ли как нибудь выполнить SQL запрос в выражении where которого был бы др SQL запрос, какой синтаксис должен быть?
К примеру на форме TQuery1, TQuery2 и что дальше?
Этот гиммор для ускорения (если выполнять конструкцию select *... from.... where in (select....) то оччень долго выполняется - сервак оччень тормозит, а так, было бы быстрее (я думаю))
есть какие нить идеи?
Oleg_er (2002-05-06 15:48:00) [1]Спасибо всем!
Действительно - BatchMove тут самый удобоваримый вариант... (Более всего в русле задания)
Еще раз - спасибо большое..
Anatoly Podgoretsky (2002-04-29 10:33:00) [2]Можно использовать предикат INSERT INTO ... SELECT FROM и потом уже работать с этой таблицей, но лучше как сказал Johnmen © (27.04.02 12:33) пересмотреть идеологию.
rvs (2002-04-29 10:12:00) [3]--->>> Anatoly Podgoretsky
Прошу прощения, вероятно я неправильно понял вопроса...
Уточним:
Oleg_er вероятно программировал на Foxpro и спрашивает , как реализовать вышеприведенный код<> в Delphi .
Я вроде как ответил,что думаю по этому поводу.
Непонятно, о чем Вы вообще ??? :-)
С уважением ,Ветал.
Anatoly Podgoretsky (2002-04-29 10:01:00) [4]rvs © (29.04.02 09:45)
Батенька, мы не в Foxpro программируем, в вопросе между прочим два типа баз и четко указан BDE
Дальше проясните по поводу синтаксиса в свете открывшихся фактов, ну если не трудно конечно, мне просто необходимо освежить свои знания LocalSql и спецификации SQL-92
rvs (2002-04-29 09:45:00) [5]--->>> Anatoly Podgoretsky
Foxpro батенька это Вам не ....
Anatoly Podgoretsky (2002-04-29 09:40:00) [6]Oleg_er (27.04.02 11:52) rvs © (29.04.02 09:17)
И где ыы нашли такой чудесный синтаксис для select
rvs (2002-04-29 09:17:00) [7]К сожалению, тоже страдаю такой бедой --> впрочем вызванной неграмотно,нелогично,безобразно организованной базой данных.
Приходится записывать промежуточные выборки в файл, затем использовать...
Если это то что надо, то рекомендую прислушаться к Lusha
(Ttable.createTable и Ttable.Batchmove)
Таким образом и реализуешь:
-->> select fld1, fld2
-->> into cursor cur
-->> from tbl
-->>а потом
-->>select fld1
-->>from cur
Удачи...
Ветал
Johnmen (2002-04-27 12:33:00) [8]Пересмотри идеологию и откажись от вложенных запросов....
Oleg_er (2002-04-27 12:28:00) [9]ну так это работать не будет!!! Это я написал от балды :)
Говорю, в реали запросик посложнее.. там иде вложенный запрос, но результат этого запроса не возможно дождаться.... поэтому и придумал перекачать часть актуальных данных к себе, а потом извращаться....
Anatoly Podgoretsky (2002-04-27 12:19:00) [10]2. TQuery2.SQL.add("select sum(elem1) from !TQuery1!")
А это и не требует индексов :-)
Lusha (2002-04-27 12:17:00) [11]>Oleg_er (27.04.02 12:13)
а это время....
Но меньшее, чем прокачка по сети этой выборки... :)
Oleg_er (2002-04-27 12:13:00) [12]а это время.... и гиммор... :-(
жаль
Lusha (2002-04-27 12:10:00) [13]>Oleg_er
А индексы тоже сохраняться?
Не должны.. :) А кто мешает их здесь же и создать... сразу после копирования...
Oleg_er (2002-04-27 12:04:00) [14]А индексы тоже сохраняться?
Oleg_er (2002-04-27 12:03:00) [15]а так, напрямую значит нельзя? :-(
Получается:
1. Выполнить запрос
2. Скопировать в таблицу <- вот без этого.... :-(
3. выполнить запрос на основании созданной талицы
:-(((
Lusha (2002-04-27 11:57:00) [16]Если работаете с BDE, то нет ничего проще... Borland в таких случаях рекомендует использовать временные таблицы... Познакомьтесь с методом TTable.BatchMove...
Oleg_er (2002-04-27 11:52:00) [17]Запросы выполняются на моей машине, дык файл БД с сервака надо закатать еще на мою машину, Отсюда этот вопрос и возник!!!!
Не хочу закатывать на мою машину 2 раза один и тот же огромный файл!!!!!
Хочу разок закатать, сделать выборку, а потом уже из ЭТОЙ выборки сделать еще одну выборку!
Пример был абстактный, в реали гораздо!! обширнее
Неужели нельзя в дельфе это сделать??
В Фоксе к примеру есть такой синтаксис:
select fld1, fld2
into cursor cur
from tbl
а потом
select fld1
from cur
в итоге все выполняется гораздо быстрей!
Anatoly Podgoretsky (2002-04-27 11:43:00) [18]Ты не понял, сервера нет, оба запроса выполняются на твоеймашине
Johnmen (2002-04-27 11:43:00) [19]Если уж хочешь делать на уровне приложения, то используй фильтрацию.
Oleg_er (2002-04-27 11:39:00) [20]Это все понятно!
но пользователь может НЕ захотеть обобщенной выборки!
И поэтому ему необходимо все рабвно показать результат первой выборки, а потом он просто выделит, что ему надо сосчитать и тогда уже сосчитать... Так что нужно ДВА запроса, а второй мне хочется выполнить уже на локальной машине! Так что, выхода нет???