Oracle коррелированный подзапрос - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть таблица, которая содержит поля:

USER_ID
MANAGER_USER_ID
COST_CENTER

Мне нужно запросить все эти данные, но COST_CENTER должен быть от менеджера, поэтому я сделал это:

select USER_ID, COST_CENTER, MANAGER_USER_ID
from EMDB e
where COST_CENTER in (
    select COST_CENTER
    from EMDB e2
    where e2.USER_ID = e.MANAGER_USER_ID
    );

Пример данных:

USER_ID    MANAGER_USER_ID    COST_CENTER
user1      user3              employeeCostCenter1
user2      user3              employeeCostCenter1
user3      manager3           employeeCostCenter2  <-- this is manager

Sample output:
USER_ID    MANAGER_USER_ID    COST_CENTER
user1      user3              employeeCostCenter2  
user1      user3              employeeCostCenter2  
user3      manager3           costCenterOfManager3

Но это не работает (ничего не возвращает).Есть предложения?

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Вы можете использовать это:

SELECT e.user_id, e.manager_user_id, e2.cost_center
FROM emdb e
INNER JOIN emdb e2
ON e2.user_id = e.manager_user_id;
0 голосов
/ 21 февраля 2019

Вот как поместить подзапрос в предложение select:

select 
  user_id, 
  manager_user_id,
  (select cost_center from emdb m where m.user_id = e.manager_user_id) as cost_center
from emdb e
order by user_id;
0 голосов
/ 21 февраля 2019

Попробуйте это:

select e.USER_ID,
       e.MANAGER_USER_ID
       e2.COST_CENTER             
    from EMDB e
      inner join EMDB e2 on e2.USER_ID = e.MANAGER_USER_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...