powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
25 сообщений из 33, страница 1 из 2
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38639696
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Есть две таблицы - клиентские запросы и примечания к ним (отношение один ко многим)
Рисую несложный запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select
    (select
        z.remarks
    from
        (select r.remarks
        from remarks r
        where r.code_req = t.code
        order by r.code desc) z
    where
        rownum < 2
    ) as last_remark,
    t.*
from
    requests t


Вылетает ошибка:
ORA-00904: "T"."CODE": invalid identifier

Зато вот так работает:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select
    (select
        r.remarks
    from
        remarks r
    where
        r.code = (select max(code) from remarks where code_req = t.code)
    ) as last_remark,
    t.*
from
    requests t



Мне бы хотелось понять, почему вылетает ошибка в первом варианте?
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38639701
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STFF Inline view не может быть коррелированным
RTFM LATERAL (FAQ)
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38639729
yens_gjytk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL-Talker,

Код: plsql
1.
2.
3.
4.
5.
6.
select (select max(r.remarks) keep (dense_rank first order by r.code desc)
          from remarks r
         where r.code_req = t.code
         group by r.code_req) last_remark,
       t.*
  from requests t
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38639738
yens_gjytk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL-Talker,

Точнее вот так даже.

Код: plsql
1.
2.
3.
4.
5.
select (select max(r.remarks) keep (dense_rank first order by r.code desc)
          from remarks r
         where r.code_req = t.code) last_remark,
       t.*
  from requests t
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38639751
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL-TalkerРисую несложный запросЛучше без надобности не злоупотреблять скалярами.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select
    (select
        z.column_value
    from
        table(cast(multiset(select r.remarks
        from remarks r
        where r.code_req = t.code
        order by r.code desc) as sys.odcivarchar2list)) z
    where
        rownum < 2
    ) as last_remark,
    t.*
from
    requests t
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38639798
Фотография Изя Кацман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopЛучше без надобности не злоупотреблять скалярами.Полностью поддерживаю!
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38640002
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, парни. Много полезной информации.
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38640079
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал у Кайта про аналитические ф-ции и нарисовал еще вот такой вариант:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
    (
    select distinct
        first_value(r.remarks) over (order by r.code desc)
    from
        remarks r
    where
        r.code_req = t.code
    ) as last_remark,
    t.*
from
    requests t
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38640087
yens_gjytk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL-Talker,

Плохой вариант.
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38640094
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL-Talker
Код: plsql
1.
select distinct ... over

Агрегирование аналитикой - быдло-код.
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38640096
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему так плохо? Поясните, плз.
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38640104
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL-TalkerПочему так плохо? Поясните, плз.Потому что distinct-ом группируют быдло-кодеры.
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38640125
yens_gjytk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL-Talker,

Да вот, относительно недавно темка была, там же на Кайта ссылка:
distinct and over by VS group by
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38640127
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно. Спасибо.
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #38640132
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yens_gjytk,

Спасибо за ссылку, почитаю
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #39293741
Uliana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно здесь же спросить?
Не хватает мозгов переделать запрос такого плана без двойной вложенности и оптимально - без лишних расчетов, прошу помощь зала
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select 
 sum(case t.b when 0 
        then t.qty
        else (select sum(qty1) from 
                     (select trunc(sum(t1.qty)\t.vl) qty1, t1.a
                      from t1
                      where t1.id=t.id
                      group by t1.a) 
               )
        end)
from t
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #39293796
sum sum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Uliana,

так у тебя межзапрос ничего коррелятского не делает, просто убери его.
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #39294037
Uliana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Убрала в итоге в функцию. Убрать межзапрос нельзя, считается кол-во целых вложений именно в разрезе показателя group by, а потом итоговая сумма полученных вложений.
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #39294046
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Uliana,

А group by по id,a делать не пробовали? :)
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #39294052
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UlianaНе хватает мозгов переделать запрос такого плана без двойной вложенности и оптимальноВерсия-то какая?
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #39294054
Uliana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Арсеньев,
да, неоптимально посчитала, так как таблица большая и по всем записям без отбора будут выполняться вычисления во втором вложенном select, запрос урезанный, там еще прочие вычисления.
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #39294058
Uliana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicВерсия-то какая? 11.2.0.3.0 64x
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #39294081
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UlianaСергей Арсеньев,
да, неоптимально посчитала,
Ну если влом ожидать, что предикат сам собой спустится, можно пойти от обратного.
Проджоинить в подзапросе с t, такими, что b!=0 (ну там с null поаккуратней) сгруппировать
и внешнее соединение в случае если не 0.
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #39294207
sum(trunc(sum()))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UlianaУбрать межзапрос нельзя, считается кол-во целых вложений именно в разрезе показателя group by, а потом итоговая сумма полученных вложений.во-первых, приведи корректный запрос. во-вторых, почему нельзя?
...
Рейтинг: 0 / 0
Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
    #39294383
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Uliana,

sum(sum()) не поможет?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SQL> ed
Wrote file afiedt.buf

  1* select sum(s) from (select sum(sal) s from emp group by deptno)
SQL> /

    SUM(S)
----------
     29025

SQL> select sum(sum(sal)) from emp group by deptno
  2  /

SUM(SUM(SAL))
-------------
        29025

SQL>



.....
stax
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вложенный подзапрос второго уровня не видит поля таблицы исходного FROM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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