表-学生:
sID |名称
1 -----苏珊
2 -----摩根
3 -----伊恩
4 -----詹姆斯
主键= sID
另一张表是这样的:
表朋友
friendsID | personA | personB
1 ----------- ----------- 1 3
2 ------------ ----------- 1 2
3 ------------- ----------- 2 3
4 ------------- ------------ 3 4
主键是:friendsID,personA,personB
外键 = personA,personB,它们都在学生表中引用 sID
我想要一种查询朋友表的方式,使得personA和personB coloumn被名称通过sID替换。我尝试了自然连接,但只有在有一个外键时才有效。
即。我正在寻找这样的东西:
friendsID | personA | personB
1 ----------- -----------苏珊伊恩
2 ------------ -----------苏珊摩根
3 ------------- -----------摩根伊恩
4 ------------- ------------伊恩詹姆斯
如果我只将personB作为列而没有personB,则自然联接会起作用。出于某种原因,当我这样做时,自然连接是巨大的: 选择*来自朋友NATURAL JOIN学生;
请帮忙。谢谢
答案 0 :(得分:3)
您需要使用两个连接来完成此任务。
例如:
select f.friendsID,
s1.name as personA_name,
s2.name as personB_name
from friends f
inner join student s1 on s1.sID = f.personA
inner join student s2 on s2.sID = f.personB