powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обращение к полям таблицы в одном джоине
9 сообщений из 9, страница 1 из 1
Обращение к полям таблицы в одном джоине
    #40012315
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаю что такое возможно в Oracle 12, но у меня 11-я версия

Как можно так написать запрос, чтобы сэмулировать вот это:

Код: plsql
1.
2.
3.
select t3.*
from t1, 
        (select * from t2 where t2.t1_id = t1.id) t3
...
Рейтинг: 0 / 0
Обращение к полям таблицы в одном джоине
    #40012323
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем проблема мне не понятно.

select t2.*
from t1,
t2
where t2.t1_id = t1.id
...
Рейтинг: 0 / 0
Обращение к полям таблицы в одном джоине
    #40012333
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я наверное слишком неподробно описал, на самом деле проблема вот в чём, нужно выполнить такой запрос:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select         
         (
           select t2.name 
           from t2
           connect by t2.id = prior t2.parent_id
           start with t2.id = t1.id                           
         ) names
from t1
where
     t1.code = '123'



Подзапрос в главном селекте может давать несколько строк, соответственно это приводит к ошибке.
...
Рейтинг: 0 / 0
Обращение к полям таблицы в одном джоине
    #40012370
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter
Подзапрос в главном селекте может давать несколько строк, соответственно это приводит к ошибке.

Т.е. есть несколько строк с кодом 123 ?
Как ты себе представляешь дерево в несколькими точками входа?
...
Рейтинг: 0 / 0
Обращение к полям таблицы в одном джоине
    #40012375
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный Вася,

нет, судя по запросу - путь к корню дерева может содержать больше одного элемента. ну то есть стартовый элемент не является корнем :)
...
Рейтинг: 0 / 0
Обращение к полям таблицы в одном джоине
    #40012391
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
verter,

Получить в результате что нужно? Было бы проще, если бы ты дал пример с тестовыми данными, что есть и что нужно сделать.
...
Рейтинг: 0 / 0
Обращение к полям таблицы в одном джоине
    #40012440
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
verter
я наверное слишком неподробно описал, на самом деле проблема вот в чём, нужно выполнить такой запрос:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select         
         (
           select t2.name 
           from t2
           connect by t2.id = prior t2.parent_id
           start with t2.id = t1.id                           
         ) names
from t1
where
     t1.code = '123'



Подзапрос в главном селекте может давать несколько строк, соответственно это приводит к ошибке.


Если подзапрос даёт несколько строк, что вы хотите получить? Все? Последнюю(корень)? Любую?

Если корень, то LEVEL=1 в условии внутреннего селекта.

Если все, то можно так:

Код: sql
1.
2.
3.
4.
5.
 select t2.name 
 from t2
 connect by t2.id = prior t2.parent_id
 start with t2.id in 
       (select t1.id from t1 where t1.code = '123')
...
Рейтинг: 0 / 0
Обращение к полям таблицы в одном джоине
    #40012443
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
verter,

Recursive subquery factoring (with) в oracle 11 есть
...
Рейтинг: 0 / 0
Обращение к полям таблицы в одном джоине
    #40012495
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter

Подзапрос в главном селекте может давать несколько строк, соответственно это приводит к ошибке.

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
SQL> ed
Wrote file afiedt.buf

  1  with t1 as (
  2  select 'OTD1' id, 7566 e, '123' code from dual union all
  3  select 'OTDa' id, 7566 e, '123' code from dual union all
  4  select 'OTD2' id, 7698 e, '123' code from dual union all
  5  select 'OTD3' id, 7782 e, '123' code from dual union all
  6  select 'OTD4' id, 7566 e, '321' code from dual )
  7  select
  8    t1.*
  9   , empno
 10   ,LPAD (' ', LEVEL * 2, ' ')||ename ename
 11   ,job, mgr,level
 12   ,connect_by_isleaf isleaf
 13   ,CONNECT_BY_ISCYCLE  iscycle
 14  from
 15    t1
 16   ,emp t2
 17  where code='123'
 18  start with t2.empno = t1.e
 19* connect by NOCYCLE t2.mgr = prior t2.empno and t1.id=prior t1.id and t1.e=prior t1.e
SQL> /

ID            E COD      EMPNO ENAME                JOB              MGR      LEVEL     ISLEAF    ISCYCLE
---- ---------- --- ---------- -------------------- --------- ---------- ---------- ---------- ----------
OTD1       7566 123       7566   JONES              MANAGER         7839          1          0          0
OTD1       7566 123       7788     SCOTT            ANALYST         7566          2          0          0
OTD1       7566 123       7876       ADAMS          CLERK           7788          3          1          0
OTD1       7566 123       7902     FORD             ANALYST         7566          2          0          0
OTD1       7566 123       7369       SMITH          CLERK           7902          3          1          0
OTD2       7698 123       7698   BLAKE              MANAGER         7839          1          0          0
OTD2       7698 123       7499     ALLEN            SALESMAN        7698          2          1          0
OTD2       7698 123       7521     WARD             SALESMAN        7698          2          1          0
OTD2       7698 123       7654     MARTIN           SALESMAN        7698          2          1          0
OTD2       7698 123       7844     TURNER           SALESMAN        7698          2          1          0
OTD2       7698 123       7900     JAMES            CLERK           7698          2          1          0
OTD3       7782 123       7782   CLARK              MANAGER         7839          1          0          0
OTD3       7782 123       7934     MILLER           CLERK           7782          2          1          0
OTDa       7566 123       7566   JONES              MANAGER         7839          1          0          0
OTDa       7566 123       7788     SCOTT            ANALYST         7566          2          0          0
OTDa       7566 123       7876       ADAMS          CLERK           7788          3          1          0
OTDa       7566 123       7902     FORD             ANALYST         7566          2          0          0
OTDa       7566 123       7369       SMITH          CLERK           7902          3          1          0

18 rows selected.



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


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