为n:m关系创建表

时间:2011-10-05 05:55:10

标签: mysql sql join relationship

我对MySQL有疑问。我有这张桌子:

ID      Name
------  ------------
1       Peter
2       John
3       Carl
4       William

根据此表链接记录:

Name          LinkedName
------------  --------------
Peter         Carl
Peter         William
Carl          John

即。 - 彼得与卡尔和威廉有关 - 卡尔与约翰有关

根据该表,我该如何创建:

ID1     ID2
------  ------------
1       3
1       4
3       2

我试过使用两个JOIN,例如

SELECT * 
  FROM PersonLinks T 
       JOIN Persons W 
          ON T.Name = W.Word 
       JOIN Persons W2 
          ON T.LinkedName = W2.Word;

但是我的服务器在这样的查询后没有响应。 我真的希望有人能在这里帮助我。感谢。

2 个答案:

答案 0 :(得分:2)

考虑第一个带有ID的表,Names称为Names,第二个带有关系的表称为LinkedName。

您应该使用以下查询:

SELECT N1.ID AS ID1, N2.ID AS ID2
FROM @LinkedNames LN
LEFT OUTER JOIN @Names N1 ON N1.Name = LN.Name
LEFT OUTER JOIN @Names N2 ON N2.Name = LN.LinkedName

这已经过测试,可以得到正确的结果。

答案 1 :(得分:0)

假设第一个具有ID和名称的表被称为emp,而第二个具有关系的表被称为链接。

select emp_instance1.id,emp_instance2.id 
  from emp emp_instance1,
       emp emp_instance2,
       link link1 
 where link1.name=emp_instance1.name 
       AND link1.link=emp_instance2.name;