Reputation: 37
I have two tables. First one
farmer_id Farmer_name
1 Raju
2 Jay
3 Ram
5 Vinay
Second one
farmer_id registered_farmer_id Season
1 2 2014-15
3 5 2015-16
Table one is the look up table which looks for the name of the farmer. Table two has two columns namely farmer_id and registered-farmer_id those look up for the same table. i.e table 1. What I need is
Farmer_id farmer_name Registered_farmer_id Registered_farmer_name
1 Raju 2 Jay
3 Ram 5 Vinay
Upvotes: 1
Views: 54
Reputation: 1464
In MS SQL 2005+, you can use CROSS APPLY:
SELECT A.farmer_id, A.Farmer_name, B.farmer_id, B.Farmer_name
FROM (
SELECT T1.farmer_id, T2.Farmer_name, T3.Registered_farmer_id
FROM Table1 T1
INNER JOIN Table T2
ON T1.farmer_id = T2.farmer_id
) AS A
CROSS APPLY (
SELECT farmer_id, Farmer_name
FROM Table1
WHERE farmer_id = A.Registered_farmer_id
) AS B
In Oracle, you use INNER JOIN instead:
SELECT A.farmer_id, A.Farmer_name, B.farmer_id, B.Farmer_name
FROM (
SELECT T1.farmer_id, T2.Farmer_name, T3.Registered_farmer_id
FROM Table1 T1
INNER JOIN Table T2
ON T1.farmer_id = T2.farmer_id
) AS A
INNER JOIN (
SELECT farmer_id, Farmer_name
FROM Table1
) AS B
WHERE B.farmer_id = A.Registered_farmer_id
Upvotes: 1
Reputation: 417
lets say your tables are called Table1(the lookup) and Table2
select t1.NAME fname, t2.NAME rfname from Table1 t1, Table1 t2, Table2 where t1.id = table1.ID and t2.id = table1.ID2 ;
Upvotes: 0
Reputation: 152
SELECT T2.farmer_id, T1.farmer_name, T2.registered_farmer_id, T3.farmer_name
FROM TABLE2 T2
LEFT JOIN TABLE1 T1
ON T2.farmer_id = T1.farmer_id
LEFT JOIN TABLE1 T3
ON T2.registered_farmer_id = T3.farmer_id;
With TABLE1 the name of table 1 and TABLE2 the name of table 2.
Upvotes: 2
Reputation: 64
if your two tables are called from 2 different database tables; then you should change the second table's id with a different name and join both table. and finally you can retrieve from the merged table.
Upvotes: 0