SQL по результатам SQL

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
rald
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.02.2005 (Пт) 11:28
Откуда: Москва

SQL по результатам SQL

Сообщение rald » 04.02.2005 (Пт) 11:40

Народ подскажите начинающему как написать SQL запрос по результатам другого запроса? Возможно ли это в VB или VBA? Вижу что у рекордсета (DAO) есть метод OpenRecordset, но как обращаться к рекордсету в синтаксисе SQLя. Линкуюсь к БД аксесса, но варианты сохранения в ней запросов мне не подходят, т.к. хочется потом найти что-то не такое громоздкое...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.02.2005 (Пт) 11:41

select * from (select .... ) where ...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.02.2005 (Пт) 11:46

В DAO Access вложенные рекордсеты точно недоступны. Используй ADO, не уверен насчет Access, но в общем они поддерживаются.
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.02.2005 (Пт) 12:01

доступны в Jet 4.0

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 04.02.2005 (Пт) 15:01

Вообще-то у Recordset-a есть еще свойство Filter (что в DAO, что в ADO) - его вполне может хватить.
Описание и пример есть в Help-e.

P.S Лично я его довольно часто использую...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

rald
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.02.2005 (Пт) 11:28
Откуда: Москва

Сообщение rald » 04.02.2005 (Пт) 16:39

Огромное спасибо... пошел пробовать...

rald
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.02.2005 (Пт) 11:28
Откуда: Москва

Сообщение rald » 07.02.2005 (Пн) 11:41

Не совсем получилось..... SELECT ... FROM (SELECT .... FROM) проходит, а вот SELECT ... FROM (TRANSFORM ...SELECT .... FROM PIVOT) не проходит...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.02.2005 (Пн) 12:11

Ну а чем тебя Filter не устраивает???
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.02.2005 (Пн) 12:11

сохрани свой кросс-запрос в таблицу, а уже потом вяжи ее с другой

rald
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.02.2005 (Пт) 11:28
Откуда: Москва

Сообщение rald » 07.02.2005 (Пн) 12:33

Filter не знаю как делать... :oops: не фильтрует и рефреш не выходит...
А кросс в таблице не сохраняется, т.к. аксесовский конструктор убирает Transform и сохраняет какую-то хрень....
а кросс такой:
TRANSFORM Count([Таблица].Поле1) AS [Count1]
SELECT [Таблица].Поле1, Count([Таблица].Поле1) AS [Кол-во], Sum([Таблица].LongF) AS Длит
FROM Таблица
WHERE ((([Таблица].Дата) Like "*.*.*"))
GROUP BY [Таблица].Поле1
PIVOT [Таблица].ID (это boolean);

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.02.2005 (Пн) 13:47

попробуй так:

select into NewTable from
TRANSFORM ....

rald
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.02.2005 (Пт) 11:28
Откуда: Москва

Сообщение rald » 07.02.2005 (Пн) 15:33

И так не выходит.... Ладно спасибо всем за советы, буду юзать фильтры, а по SQL найду себе большую книжку :D

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.02.2005 (Пн) 16:54

rald писал(а):Filter не знаю как делать... :oops: не фильтрует и рефреш не выходит...


Что там сложного?

r.Filter = "ID = 12"

Никакого "рефреш" там не нужно.

Только курсор должен быть статическим...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 08.02.2005 (Вт) 11:16

rald писал(а):а по SQL найду себе большую книжку

Зачем большая, Грабер самое оно для SQL
"SQL Справочное руководство"
А по продуктам одной большой можешь не отделаться :D

Да кстати спроси на sql.ru


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 9

    TopList