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

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

Выборка из выборки [D5, dBase, FoxPro]


Страницы:   1 2

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]

Это все понятно!

но пользователь может НЕ захотеть обобщенной выборки!
И поэтому ему необходимо все рабвно показать результат первой выборки, а потом он просто выделит, что ему надо сосчитать и тогда уже сосчитать... Так что нужно ДВА запроса, а второй мне хочется выполнить уже на локальной машине! Так что, выхода нет???


Страницы:   1 2

Наверх

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