powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подзапросы в SELECT or FROM
9 сообщений из 9, страница 1 из 1
Подзапросы в SELECT or FROM
    #39455693
Sergyn4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, объясните пожалуйста (можно даже как ребенку -_-), как использовать подзапросы в select or from? Я прекрасно понимаю, как это работает после WHERE. Но очень туго представляю, как работает в SELECT, FROM
...
Рейтинг: 0 / 0
Подзапросы в SELECT or FROM
    #39455746
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
tst> select x, (select 1 from dual) y
  2  from (select dummy x from dual) z, dual
  3  where z.x in (select dummy from dual);

X          Y
- ----------
X          1
...
Рейтинг: 0 / 0
Подзапросы в SELECT or FROM
    #39455751
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

Дополним для общности
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
with -- -> factored subqueries
  t1 as (select 1 id1 from dual)
, t2 as (select 1 id2 from dual)
, t3 as (select 1 id3 from dual)
select iv.*
       , (select 1 from dual) scalar
          -- -> scalar subqery
       , (select 1 from dual where iv.id1 * iv.id2 * iv.id3 = 1) corr_scalar
          -- -> correlated scalar subqery
from
(
select *
from (t1) -- -> table reference
join (t2 cross join t3) --> join clause
  on t1.id1 = t2.id2 * t3.id3
) iv -- > inline view
, lateral(select * from dual where iv.id1 * iv.id2 * iv.id3 = 1) --> lateral inline view
where (id1, id2, id3) in (select 1, 1, 1 from dual) --> nested subquery
and (id1, id2, id3) in ((1, 1, 1)) --> not a subquery
/

       ID1        ID2        ID3     SCALAR CORR_SCALAR
---------- ---------- ---------- ---------- -----------
         1          1          1          1           1


Дефиниции
...
Рейтинг: 0 / 0
Подзапросы в SELECT or FROM
    #39455846
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

C cross join и lateral очень подходит для подсказки (можно даже как ребенку -_-)
Не помню точно, но вроде оба появились в Oracle 12
...
Рейтинг: 0 / 0
Подзапросы в SELECT or FROM
    #39455856
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

cross join - древняя штука.
...
Рейтинг: 0 / 0
Подзапросы в SELECT or FROM
    #39455866
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envMaximaXXL,

cross join - древняя штука.

Ага, с "cross apply" спутал =)
...
Рейтинг: 0 / 0
Подзапросы в SELECT or FROM
    #39455997
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

То просто, чтоб показать ТС, что не всякая хрень в скобочках даже следующая после from или join - подздапрос,
Но всякий подзапрос обрамляется скобками. :)
...
Рейтинг: 0 / 0
Подзапросы в SELECT or FROM
    #39456125
mikhail.aksenov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим, ты хочешь узнать фамилии всех сотрудников в организации, у кого зарплата больше чем у бухгалтера Николая. Проблема в том, что мы явно, не знаем, какая зарплата у Николая, может 20т.р., а может и 50т.р., потому план действий:
1. Нужно узнать какая зарплата у бухгалтера Николая. Этим будет заниматься подзапрос.
2. Получим список фамилий сотрудников, у кого зарплата больше, чем результат 1го запроса.

select second_name from employees
where salary > (select salary from employees where first_name='Николай' and job_title = 'Бухгалтер')
...
Рейтинг: 0 / 0
Подзапросы в SELECT or FROM
    #39456126
mikhail.aksenov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не то прочитал, прощу простить.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подзапросы в SELECT or FROM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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