![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по SQL [D7, Paradox]
Monk © (2005-10-13 10:55:00)Посоветуйте, как быть.
Существует таблица 1(TTable1). Из таблицы 1 делается выборка по SQL-запросу и помещается в компонент TQuery(TQuery активен). Нужно теперь из этой выборки сделать еще SQL-запрос (например, подсчитать сумму каких-нибудь полей. В общем не важно, любой SQL-запрос). Как это сделать? При ссылке на TQuery происходит ошибка, т.к. ищется физически существующая таблица.
evvcom (2005-10-13 16:47:00) [1]
> Поясни, как можно хранимкой выбирать данные из произвольной
> таблицы
А о понятии динамического SQL ты когда-нибудь слышал? Только нужно ли это?
Johnmen (2005-10-13 15:28:00) [2]>msguns © (13.10.05 14:40) [19]
>Поясни, как можно хранимкой выбирать данные из произвольной таблицы
А, вот ты о чём.
Контрвопрос - а как тебе в этом помогает Аксес ?
msguns (2005-10-13 14:40:00) [3]>Johnmen © (13.10.05 13:40) [16]
>Странно... Мне достаточно одной...:)
Поясни, как можно хранимкой выбирать данные из произвольнойтаблицы
ANB (2005-10-13 14:12:00) [4]
> Seg (13.10.05 13:50) [17]
- нехорошее решение.
Для нормальных субд есть вложенные запросы.
Seg (2005-10-13 13:50:00) [5]TQuery нельзя использовать для выборки запроса.
Можно только запустить по нему цикл и посчитать то, что нужно.
Чтобы не бегать по всему запросу, можно предварительно поставить фильтр.
Johnmen (2005-10-13 13:40:00) [6]>msguns © (13.10.05 13:25) [15]
>...мне надо сообразить 100 ХП.
Странно... Мне достаточно одной...:)
И не совсем понятно, причём тут селект из селекта?
М.б. мы говорим о разных вещах?
msguns (2005-10-13 13:25:00) [7]>Johnmen © (13.10.05 11:48) [11]
>ЗЫ Селект из вью или хп и есть селект из селекта.
Дадада ! Есть БД с 100 справочниками (для примера).
Пишу ОДИН модуль, работащий со всеми справочниками (в смысле любым из них). Для того, чтобы узер мог сортануть, фильтрануть или искать в гриде (датасете), мне надо сообразить 100 ХП.
Спасибо, кушайте сами-с ;)
ANB (2005-10-13 12:41:00) [8]ЗЫ. Ветку ща прикроют, так как тема не оформлена
ANB (2005-10-13 12:39:00) [9]
> Digitman © (13.10.05 11:37) [10]
- похоже у автора так таблица называется.
Автору - откуда движок СУБД знает о твоем компоненте в твоей программе ? Тем более, что в рантайме это просто кусок памяти и чисто делфовое RTTI.
Monk (2005-10-13 11:55:00) [10]To Digiman: это я просто сначала обобщить хотел :)
Johnmen (2005-10-13 11:48:00) [11]>msguns © (13.10.05 11:26) [9]
Хм... странно это как-то....
Бросать из-за надуманных проблем...:)
ЗЫ Селект из вью или хп и есть селект из селекта.
Digitman (2005-10-13 11:37:00) [12]
> Monk © (13.10.05 11:15) [7]
я не понял - компонент Table1 тут причем ?
msguns (2005-10-13 11:26:00) [13]Сабж интересный ;))
Именно из-за него я в свое время кинул интербэйз и перешел на акцесс+адо.
Просто надоело в каждом случае для сортировок и поисков юзать всякие индексы, фильтры и прочие "навороты". Или писать супергромоздкие парсеры.
В Access есть замечательная штукенция - вложенные запросы (Select from Select), с помощью которых можно исходный запрос вывернуть как угодно, в т.ч. организовать "выбор из выбранных".
Sergey13 (2005-10-13 11:25:00) [14][7] Monk © (13.10.05 11:15)
SELECT FilmsBD.GenreID,sum(NumberOfDisks) AS Expr
FROM Genres INNER JOIN FilmsBD ON Genres.ID = FilmsBD.GenreID
Group By FilmsBD.GenreID
Не то?
Monk (2005-10-13 11:15:00) [15]Вот текст запроса для таблицы:
DataModule1.Query1.SQL.Add('SELECT sum(NumberOfDisks) AS Expr');
DataModule1.Query1.SQL.Add('FROM Genres INNER JOIN FilmsBD ON Genres.ID = FilmsBD.GenreID;');
Думал, что пройдет аналогичный запрос и для активного query:
DataModule1.Query1.SQL.Add('SELECT sum(NumberOfDisks) AS Expr');
DataModule1.Query1.SQL.Add('FROM Genres INNER JOIN Query ON Genres.ID = Query.GenreID');
Но обломался.
Desdechado (2005-10-13 11:12:00) [16]выборка делается из БД, а не из компонента
и причем тут Table1? Query и без него работает
Digitman (2005-10-13 11:03:00) [17]
> Из таблицы 1 делается выборка по SQL-запросу
это как ?
Sergey13 (2005-10-13 11:02:00) [18]2 [2] Monk © (13.10.05 11:00)
Может и посоветую, если буду знать о чем речь. 8-)
ANB (2005-10-13 11:02:00) [19]
> Monk © (13.10.05 10:55)
Распарсить исходный запрос, докрутить его и еще раз выполнить. Так все и делают. Для удобства запрос можно хранить не в квери а отдельными строками по кусочкам (например : поля, таблицы, условие, сортировка, группировка) и собирать его перед выполнением.
Monk (2005-10-13 11:00:00) [20]Посоветуйте лучше. С удовольствием учту