Reputation: 151
I have table that contains fields:
USER_ID
MANAGER_USER_ID
COST_CENTER
I need to query all of this data, but COST_CENTER
should be from manager, so I have made this:
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
);
Sample data:
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
But this doesn't work (returns nothing). Any suggestions?
Upvotes: 1
Views: 45
Reputation: 94913
Here is how to put the subquery in the select clause:
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;
Upvotes: 0
Reputation: 5442
You could use this:
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;
Upvotes: 1
Reputation: 1612
Try this:
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
Upvotes: 1