2个外键在MySQL中引用相同的主键

时间:2014-10-28 20:59:56

标签: mysql database primary-key mysql-workbench foreign-key-relationship

像这样:

表-学生:

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学生;

请帮忙。谢谢

1 个答案:

答案 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