Sql 使用关联行检索查找列两次
我有两张桌子。 第一个Sql 使用关联行检索查找列两次,sql,database,oracle,Sql,Database,Oracle,我有两张桌子。 第一个 farmer_id Farmer_name 1 Raju 2 Jay 3 Ram 5 Vinay 第二个 farmer_id registered_farmer_id Season 1 2 2014-15 3
farmer_id Farmer_name
1 Raju
2 Jay
3 Ram
5 Vinay
第二个
farmer_id registered_farmer_id Season
1 2 2014-15
3 5 2015-16
表1是查找表,用于查找农民的姓名。表2有两列,即farmer\u id和registered-farmer\u id,它们查找相同的表。i、 e表1。我需要的是
Farmer_id farmer_name Registered_farmer_id Registered_farmer_name
1 Raju 2 Jay
3 Ram 5 Vinay
如果您的两个表是从两个不同的数据库表调用的;然后,您应该使用不同的名称更改第二个表的id,并将这两个表连接起来。 最后,您可以从合并表中检索
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;
表1是表1的名称,表2是表2的名称。假设您的表被称为表1(查找)和表2 选择t1.NAME fname,t2.NAME rfname 来自表1 t1、表1 t2、表2 其中t1.id=表1.id,t2.id=表1.ID2
; 在MS SQL 2005+中,您可以使用: 在Oracle中,您可以使用内部联接:
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
但第二个表有两列farmer\u id,它在第一个表中查找实际的farmer\u名称,另一列registered-farmer\u id也在第一个表中查找关联名称。因此,列看起来是同一个表(第二个)来查找关联的名称。我认为这会导致一个不明确的问题,如果您想在检索页面中显示id列,那么它应该是唯一的,因此我建议使用不同的名称标记更改第二个id字段,并将它们合并。谢谢buddy@user3331966
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