Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.036 c
1-1129199943
Aleksandr.
2005-10-13 14:39
2005.11.06
Объясните мне, в чем проблема уничтожения терминированной нити?!


14-1129577672
YurikGL
2005-10-17 23:34
2005.11.06
Глюкало


3-1127459903
Леди
2005-09-23 11:18
2005.11.06
Что за ошибка? Command contains unrecognized phrase/keyword.


14-1129219994
NewWonder
2005-10-13 20:13
2005.11.06
HP 640c снова траблы...


4-1125854024
Ландграф Павел
2005-09-04 21:13
2005.11.06
рисовать на канве то, что находится под ней (под формой)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский