Как выбрать связанную группу элементов в Oracle SQL - PullRequest
2 голосов
/ 19 ноября 2008

У меня есть некоторые данные вида

Key    ID      Link       
1      MASTER  123
2      AA      123
3      AA      123
4      BB      123
5      MASTER  456
6      CC      456

Я хотел бы иметь возможность выбрать одновременно выбрать все связанные элементы, соответствующие критериям выбора, а также связанный мастер. Например, если у меня есть идентификатор «AA», я хочу, чтобы были возвращены строки с ID = «AA», плюс строка с ID = «MASTER» и ссылкой 123:

1      MASTER  123
2      AA      123
3      AA      123

Я использую Oracle 10.2g, так что если какой-то специальный синтаксис Oracle сделает это проще, тогда это будет нормально.

Ответы [ 4 ]

4 голосов
/ 19 ноября 2008

Вот один из методов.

SELECT DISTINCT key, id, link
  FROM the_table
  START WITH id = 'AA'
  CONNECT BY id = 'MASTER' and link = PRIOR link and 'AA' = PRIOR ID
0 голосов
/ 19 ноября 2008

Что я понимаю, так это то, что у вас есть все записи, которые имеют ту же «ссылку», что и та, у которой id = AA Для начала вам нужно поле ссылки:

select i.link from table i
where i.id = YOUR_ID

теперь вы "выбираете" записи, имеющие эту ссылку

select * from table 
where link in (select i.link from table i where i.id = YOUR_ID)

Этот выбор должен дать вам нужные записи ...

0 голосов
/ 19 ноября 2008

Если я правильно понимаю, вот пример, который, я думаю, делает то, что вы ищете:

select * from my_table where link in
(select link
from my_table
where id = 'AA')
and id in ('AA','MASTER')
0 голосов
/ 19 ноября 2008

SELECT * FROM table_name WHERE ID = your_id UNION ALL SELECT * FROM table_name WHERE ID = 'MASTER' И ссылка = (ВЫБЕРИТЕ ссылку ИЗ table_name WHERE ID = your_id)

Это должно ответить на вопрос, который я понял;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...