具有2个FK的表指向同一个表

时间:2014-09-02 22:07:12

标签: mysql database

我使用MySQL和MyISAM引擎。假设我有以下2个数据库表:

TableX的

ID, Person1ID, Person2ID

ID, Name

我的查询应该如何,因为我有2个指向同一个表的外键? 我一直试图加入赌桌,但运气不好......

我想选择

ID, Name, Name

2 个答案:

答案 0 :(得分:3)

在您的情况下,您需要两次加入Person表,这是一个示例:

SELECT j.ID, 
       p.Name AS `Person 1 Name`,
       p2.Name AS `Person 2 Name`
  FROM TableX j
  JOIN Person p
    ON p.ID = j.Person1ID
  JOIN Person p2
    ON p2.ID = j.Person2ID

答案 1 :(得分:1)

这是一个执行JOIN操作以从Person表中检索相关行的查询示例:

SELECT t.ID
     , t.Person1ID
     , t.Person2ID
     , p1.ID          AS `p1_ID`
     , p1.Name        AS `p1_Name`
     , p2.ID          AS `p2_ID`
     , p2.Name        AS `p2_Name`
 FROM TableX t
 LEFT
 JOIN Person p1 
   ON p1.ID = t.Person1ID
 LEFT
 JOIN Person p2
   ON p2.ID = t.Person2ID
ORDER BY t.ID

如果要排除Person表中没有匹配行的行,可以删除LEFT关键字以替换"外部"加入"内部"加入。