Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

Вопрос по SQL   Найти похожие ветки 

 
Monk ©   (2005-10-13 10:55) [0]

Посоветуйте, как быть.
Существует таблица 1(TTable1). Из таблицы 1 делается выборка по SQL-запросу и помещается в компонент TQuery(TQuery активен). Нужно теперь из этой выборки сделать еще SQL-запрос (например, подсчитать сумму каких-нибудь полей. В общем не важно, любой SQL-запрос). Как это сделать? При ссылке на TQuery происходит ошибка, т.к. ищется физически существующая таблица.


 
Sergey13 ©   (2005-10-13 10:58) [1]

В БДЕ вроде можно сохранить текст запроса в файл и обращаться в другом запросе к нему. Подробности не помню, но есть в хелпе.

ЗЫ: Это не очень хороший подход в целом. ИМХО.


 
Monk ©   (2005-10-13 11:00) [2]

Посоветуйте лучше. С удовольствием учту


 
ANB ©   (2005-10-13 11:02) [3]


> Monk ©   (13.10.05 10:55)

Распарсить исходный запрос, докрутить его и еще раз выполнить. Так все и делают. Для удобства запрос можно хранить не в квери а отдельными строками по кусочкам (например : поля, таблицы, условие, сортировка, группировка) и собирать его перед выполнением.


 
Sergey13 ©   (2005-10-13 11:02) [4]

2 [2] Monk ©   (13.10.05 11:00)
Может и посоветую, если буду знать о чем речь. 8-)


 
Digitman ©   (2005-10-13 11:03) [5]


> Из таблицы 1 делается выборка по SQL-запросу


это как ?


 
Desdechado ©   (2005-10-13 11:12) [6]

выборка делается из БД, а не из компонента
и причем тут Table1? Query и без него работает


 
Monk ©   (2005-10-13 11:15) [7]

Вот текст запроса для таблицы:
     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");
Но обломался.


 
Sergey13 ©   (2005-10-13 11:25) [8]

[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


Не то?


 
msguns ©   (2005-10-13 11:26) [9]

Сабж интересный ;))

Именно из-за него я в свое время кинул интербэйз и перешел на акцесс+адо.
Просто надоело в каждом случае для сортировок и поисков юзать всякие индексы, фильтры и прочие "навороты". Или писать супергромоздкие парсеры.

В Access есть замечательная штукенция - вложенные запросы (Select from Select), с помощью которых можно исходный запрос вывернуть как угодно, в т.ч. организовать "выбор из выбранных".


 
Digitman ©   (2005-10-13 11:37) [10]


> Monk ©   (13.10.05 11:15) [7]


я не понял - компонент Table1 тут причем ?


 
Johnmen ©   (2005-10-13 11:48) [11]

>msguns ©   (13.10.05 11:26) [9]

Хм... странно это как-то....
Бросать из-за надуманных проблем...:)

ЗЫ Селект из вью или хп и есть селект из селекта.


 
Monk ©   (2005-10-13 11:55) [12]

To Digiman: это я просто сначала обобщить хотел :)


 
ANB ©   (2005-10-13 12:39) [13]


> Digitman ©   (13.10.05 11:37) [10]
- похоже у автора так таблица называется.

Автору - откуда движок СУБД знает о твоем компоненте в твоей программе ? Тем более, что в рантайме это просто кусок памяти и чисто делфовое RTTI.


 
ANB ©   (2005-10-13 12:41) [14]

ЗЫ. Ветку ща прикроют, так как тема не оформлена


 
msguns ©   (2005-10-13 13:25) [15]

>Johnmen ©   (13.10.05 11:48) [11]
>ЗЫ Селект из вью или хп и есть селект из селекта.

Дадада ! Есть БД с 100 справочниками (для примера).
Пишу ОДИН модуль, работащий со всеми справочниками (в смысле любым из них). Для того, чтобы узер мог сортануть, фильтрануть или искать в гриде (датасете), мне надо сообразить 100 ХП.

Спасибо, кушайте сами-с ;)


 
Johnmen ©   (2005-10-13 13:40) [16]

>msguns ©   (13.10.05 13:25) [15]
>...мне надо сообразить 100 ХП.

Странно... Мне достаточно одной...:)
И не совсем понятно, причём тут селект из селекта?

М.б. мы говорим о разных вещах?


 
Seg   (2005-10-13 13:50) [17]

TQuery нельзя использовать для выборки запроса.
Можно только запустить по нему цикл и посчитать то, что нужно.
Чтобы не бегать по всему запросу, можно предварительно поставить фильтр.


 
ANB ©   (2005-10-13 14:12) [18]


> Seg   (13.10.05 13:50) [17]

- нехорошее решение.
Для нормальных субд есть вложенные запросы.


 
msguns ©   (2005-10-13 14:40) [19]

>Johnmen ©   (13.10.05 13:40) [16]
>Странно... Мне достаточно одной...:)

Поясни, как можно хранимкой выбирать данные из произвольной таблицы


 
Johnmen ©   (2005-10-13 15:28) [20]

>msguns ©   (13.10.05 14:40) [19]
>Поясни, как можно хранимкой выбирать данные из произвольной таблицы

А, вот ты о чём.
Контрвопрос - а как тебе в этом помогает Аксес ?


 
evvcom ©   (2005-10-13 16:47) [21]


> Поясни, как можно хранимкой выбирать данные из произвольной
> таблицы

А о понятии динамического SQL ты когда-нибудь слышал? Только нужно ли это?



Страницы: 1 вся ветка

Текущий архив: 2005.11.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.038 c
2-1128958339
invisibleds@yandex.ru
2005-10-10 19:32
2005.11.06
Как можно подключится к MayaSQL или MsSql через delphi?


6-1122368604
shade_
2005-07-26 13:03
2005.11.06
"новое удалённое подключение к сети"(RAS) программно...?


1-1129474977
wp2
2005-10-16 19:02
2005.11.06
Обработка событий для элементов, которые находятся в динамическом


2-1129103833
Rykow
2005-10-12 11:57
2005.11.06
не могу прочитать вложение письма


2-1129180521
Timur
2005-10-13 09:15
2005.11.06
MS SQL и Delphi