Reputation: 1
I have following two tables:
naming table
M_ID Name
----------------
1 apple
2 orange
3 pear
mapping_table
M_ID_1 M_ID_2
------------------
1 2
3 1
2 3
How to make it output like that?????? I use oracle 11g.
Name1 Name2
----------------
apple orange
pear apple
orange pear
Upvotes: 0
Views: 1488
Reputation: 1979
Try this query:
SELECT (SELECT n.name
FROM name_table n
WHERE m.m_id_1 = n.m_id) name1,
(SELECT n.name
FROM name_table n
WHERE m.m_id_2 = n.m_id) name2
FROM mapping_table m;
Upvotes: 1
Reputation: 4538
Query
with tab(M_ID, Name) as
(select 1,'apple' from dual union all
select 2,'orange' from dual union all
select 3,'pear' from dual),
tab2(M_ID_1, M_ID_2) as
(select 1,2 from dual union all
select 3,1 from dual union all
select 2,3 from dual)
----
--End of data
----
select (select name from tab where m_id = M_ID_1) M_ID_1,
(select name from tab where m_id = M_ID_2) M_ID_2
from tab2;
Output:
| M_ID_1 | M_ID_2 |
|--------|--------|
| apple | orange |
| pear | apple |
| orange | pear |
Upvotes: 0
Reputation: 6639
Try like this,
SELECT a.name name1, b.name name2
FROM naming_table A,
naming_table B,
mapping_table c
WHERE A.m_id = c.m_id_1
AND b.m_id = c.m_id_2;
Upvotes: 0
Reputation: 231661
Something like this would seem to be what you're after
SELECT n1.name name1,
n2.name name2
FROM mapping_table m
JOIN name_table n1
ON( m.m_id_1 = n1.m_id )
JOIN name_table n2
ON( n.m_id_2 = n2.m_id )
Upvotes: 1