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