powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / сложный запрос
7 сообщений из 7, страница 1 из 1
сложный запрос
    #39951782
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем!

подскажите, какой должен быть синтаксис в select с вложенным select?

например надо сделать:
Код: sql
1.
SELECT DISTINCT f1 from {...} INTO CURSOR cur1



где в свою очередь from {...} это:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select ;
    a.f1, ;
    b.f2, ;
    c.f2 ;
      from tb1 a, tb2 b, tb3 c ;
       where...
       into cursor cur2 ;
       order by1


как правильно записать?
...
Рейтинг: 0 / 0
сложный запрос
    #39951824
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmitryKn,

Разобрался, записал в конструкции select f1 from t1 where f1 in (select ..where... (select..)), работает.
Синтаксис, однако, с вложением в from остался непонятым (
...
Рейтинг: 0 / 0
сложный запрос
    #39951827
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
select distinct a.f1;
      from tb1 a, tb2 b, tb3 c ;
       where...
       into cursor cur2 ;
       order by 1
...
Рейтинг: 0 / 0
сложный запрос
    #39951838
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

доброго дня!

Да, так запрос в общем виде и выглядит.
Я имел ввиду как записать вложение select в from, в хэлпе SELECT … FROM (SELECT …) [AS] Alias…

как-то не догоняю, что именно такое [AS] Alias, это результирующий курсор, или что это, и как и куда его воткнуть и где какие скобки. Пробовал по-разному, либо пишет файл не существует, либо открывает окно для поиска таблиц.

В общем, хотел на какой-то реальный пример посмотреть, как это записывается.
...
Рейтинг: 0 / 0
сложный запрос
    #39951845
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем случае так
Код: sql
1.
SELECT A.f1 from (select ...) A where A.f2...


Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT A.f1 from (select ;
    a.f1, ;
    b.f2, ;
    c.f2 ;
      from tb1 a, tb2 b, tb3 c ;
       where...) A;
 INTO CURSOR cur1
...
Рейтинг: 0 / 0
сложный запрос
    #39951856
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKn,

Ну, так нельзя несколько раз в рамках одного общего запроса использовать опцию INTO. Запрос-то один общий, пусть и с вложенными подзапросами. Значит, записывается куда-то в одно общее место.

Если формально, по Вашему примеру, то

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT DISTINCT tmpTab.f1_a ;
from ( ;
        select 
            a.f1 as f1_a, ;
            b.f2 as f2_b, ;
            c.f2 as f2_c;
        from tb1 a, tb2 b, tb3 c ;
        where... ;
        ) as tmpTab;

INTO CURSOR cur1



tmpTab - это идентификатор подзапроса внутри основного запроса. Чтобы можно было обращаться к полям, которые этот самый подзапрос сформировал вне самого подзапроса

В общем случае опция [as] - это способ обозначить что-то (поле или подзапрос) внутри тела запроса. Дать имя соответствующему объекту явным образом. Если этого не делать, то FoxPro сам, автоматически, сформирует соответствующие имена. Но в этом случае Вы не будете знать, какое именно имя сформируется. Соответственно, не сможете и обратится к этому объекту напрямую.

Собственно, ведь в Вашей конструкции

Код: sql
1.
 from tb1 a, tb2 b, tb3 c ;



Вот эти самые a,b,c - это те же самые алиасы и есть. Хотя использовать однобуквенные алиасы крайне не желательно, поскольку FoxPro может их перепутать с именами рабочих областей.
...
Рейтинг: 0 / 0
сложный запрос
    #39952343
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, ВладимирМ,

большое спасибо за пример и короткий ликбез!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / сложный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]