SQL:将同一个表中的两个不同的行连接到一个关系

时间:2014-08-26 09:50:21

标签: sql oracle join subquery where

我们说我有一个名为relation的表,其中包含以下字段:

id, type, person1.id, person2.id

然后在那个名为person的人的桌子上有这个字段:

id, name

现在我想创建一个包含以下信息的列表:

relation.id, relation.type, person1.id, person1.name, person2.id, person2.name

如何使用SQL语句实现此目的?我知道这可能是一个非常基本的问题。 : - (

2 个答案:

答案 0 :(得分:2)

您需要两次使用人员表:

select rel.id, rel.type, p1.id, p1.name, p2.id, p2.name
  from relation rel
     , person p1
     , person p2
 where rel.person1 = p1.id
   and rel.person2 = p2.id

查看this

答案 1 :(得分:-1)

select relation.type,a.Person1_name,b.person2.name  from relation inner join 

(select relation.type, person1.name Person1_name from relation  inner join person
on relation.person1=person.name
where person1 is not null)a
on relation.type=a.type
inner join 
(
select relation.type, person2.name,from relation  inner join person
on relation.person2=person.name
where person2 is not null)b
on relation.type=a.type

请尝试此代码