Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用关联行检索查找列两次_Sql_Database_Oracle - Fatal编程技术网

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