powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подзапрос
28 сообщений из 28, показаны все 2 страниц
Подзапрос
    #39802587
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день написал запрос
Код: plsql
1.
2.
3.
4.
5.
6.
select k.rest from (select r.rest
                                   , r.liasid 
                              from brsliasrests r
                             order by r.restdate) k
                             where k.liasid = l.liasid
                               and rownum = 1)


где сразу сортирую данные, потом ограничиваю их по liasid(сравниваю с другой таблицей) и отбираю одну запись
Как можно реализовать, чтобы сразу ограничивать по liasid, потом сортировать и отбирать одну запись?
...
Рейтинг: 0 / 0
Подзапрос
    #39802596
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanya,

Код: plsql
1.
2.
3.
4.
5.
6.
select k.rest
from (select r.rest
        from brsliasrests r
        where r.liasid = l.liasid
        order by r.restdate) k
where rownum = 1)


Это?
...
Рейтинг: 0 / 0
Подзапрос
    #39802603
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex-lsЭто?STFF: Inlline view не может быть кор....
...
Рейтинг: 0 / 0
Подзапрос
    #39802605
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex-ls,

не совсем, ваш вариант не рабочий "l.liasid: invalid indentifiet"
что заработало приходится выносить за скобки
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
       (select k.rest
          from (select r.rest, r.liasid
                  from brsliasrests r
               --  where r.liasid = l.liasid
                 order by r.restdate) k
                 where k.liasid = l.liasid
                   and rownum = 1) SumIn
from brslias l 


получается сразу идет сортировка и только потом ограничение по liasid, что не подходит
...
Рейтинг: 0 / 0
Подзапрос
    #39802608
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanyaчтобы сразу ограничивать по liasid, потом сортировать и отбирать одну запись?RTFM 1) lateral , 2) row_limiting_clause (FAQ)
...
Рейтинг: 0 / 0
Подзапрос
    #39802617
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicalex-lsЭто?STFF: Inlline view не может быть кор....
"l" может быть например коллекцией с полем liasid, с какого перепугу это должен быть обязательно алиас, как ту позже выясняется?
...
Рейтинг: 0 / 0
Подзапрос
    #39802620
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanyaalex-ls,
не совсем, ваш вариант не рабочий "l.liasid: invalid indentifiet"
мой вариант рабочий, это Вы не весь запрос сразу привели. если l.liasid это например поле коллекции, то все работает
...
Рейтинг: 0 / 0
Подзапрос
    #39802625
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex-lsс какого перепугу это должен быть обязательно алиасСтаж плюс опыт позволяют зреть в корень.
...
Рейтинг: 0 / 0
Подзапрос
    #39802627
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
…, 3) FIRST/LAST
...
Рейтинг: 0 / 0
Подзапрос
    #39802628
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
 
      select k.rest
      from (select r.rest
              from brsliasrests r, brslias l
              where r.liasid = l.liasid
              order by r.restdate) k
      where rownum = 1


так?
...
Рейтинг: 0 / 0
Подзапрос
    #39802634
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex-lsтак?
Зачем так упрямо ещё глубже садиться в лужу?
...
Рейтинг: 0 / 0
Подзапрос
    #39802639
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicalex-lsтак?
Зачем так упрямо ещё глубже садиться в лужу?
ну я же смайлик поставил! а говорил что опыт у тебя есть...
...
Рейтинг: 0 / 0
Подзапрос
    #39802647
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
      
select r.rest
  from brsliasrests r
where   exists (select 1 from brslias l where r.liasid = l.liasid)
and not exists (select 2 from brsliasrests r2 where r.liasid = r2.liasid and r.restdate < r2.restdate)
...
Рейтинг: 0 / 0
Подзапрос
    #39802654
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
      
select r.rest
  from brsliasrests r
where   exists (select 1 from brslias l where r.liasid = l.liasid)
and not exists (select 2 from brsliasrests r2 where r.liasid = r2.liasid 


and r.restdate < r2.restdate)



Код: plsql
1.
2.
r.restdate < r2.restdate --DESC
r.restdate > r2.restdate --ASC
...
Рейтинг: 0 / 0
Подзапрос
    #39802662
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

ладно, что-то мне стыдно перед вами стало

Код: plsql
1.
2.
select liasid, first_value(rest) over(partition by liasid order by restdate)
from brsliasrests
...
Рейтинг: 0 / 0
Подзапрос
    #39802665
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex-ls
Код: plsql
1.
over

Мимо.
...
Рейтинг: 0 / 0
Подзапрос
    #39802669
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы решили пойти по простому пути, которые вовсе не подходят
конструкция запроса такая
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select 1,
         2,
         3,
         4,
         (select k.rest from (select r.rest
                                   , r.liasid 
                              from brsliasrests r
                             order by r.restdate) k
                             where k.liasid = l.liasid
                               and rownum = 1) as qwerty,
         5
 from brslias l
inner join test1 on (...)
inner join test2 on (...)
inner join test3 on (...)
where ...
...
Рейтинг: 0 / 0
Подзапрос
    #39802679
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicalex-ls
Код: plsql
1.
over


Мимо.
brslias вообще не нужна по факту, данные из нее текущим запросом не берутся, поэтому можно пройтись только по brsliasrests, разве что группировку добавить. поэтому для каждого значения liasid ищем first/last с заданной сортировкой
...
Рейтинг: 0 / 0
Подзапрос
    #39802682
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
select liasid, max(rest)
from (
  select liasid, first_value(rest) over(partition by liasid order by restdate) rest
  from brsliasrests)
group by liasid
...
Рейтинг: 0 / 0
Подзапрос
    #39802685
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanya,

для не древніх версій
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select d.deptno,
 (select * from 
(select e.ename from emp e where e.deptno=d.deptno order by 1) t
 where rownum=1) t
from dept d
/
DEPTNO	E
10	CLARK
20	ADAMS
30	ALLEN



.....
stax
...
Рейтинг: 0 / 0
Подзапрос
    #39802693
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

d.deptno не определен, это на старых версиях так?
...
Рейтинг: 0 / 0
Подзапрос
    #39802694
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanyaконструкция запроса такая


если я правильно понял конструкцию
k.liasid = l.liasid надо чутку выше, перед order by r.restdate

....
stax
...
Рейтинг: 0 / 0
Подзапрос
    #39802697
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanyaStax,

d.deptno не определен, это на старых версиях так?

да 21864635

.....
stax
...
Рейтинг: 0 / 0
Подзапрос
    #39802705
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

с какой версии так уже можно писать?
...
Рейтинг: 0 / 0
Подзапрос
    #39802706
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanya,

для не очень древніх
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> ed
Wrote file afiedt.buf

  1  select d.deptno,
  2  (select substr(min(to_char(hiredate,'yyyymmdd')||e.ename),9) e from emp e where e.deptno=d.deptno) e
  3* from dept d
SQL> /

    DEPTNO E
---------- ----------
        10 CLARK
        20 SMITH
        30 ALLEN
        40



.....
stax
...
Рейтинг: 0 / 0
Подзапрос
    #39802708
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanyaStax,

с какой версии так уже можно писать?
імхо
c 12-й

.....
stax
...
Рейтинг: 0 / 0
Подзапрос
    #39802713
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,
у меня 12я стоит, но почему то такие ошибки возникают
version 12.0.4.1826
...
Рейтинг: 0 / 0
Подзапрос
    #39802717
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanya,

пробывал на apex.oracle.com
Oracle Database 18c Enterprise Edition Release 18. 0.0.0.0 - Production

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


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