2012-02-04 86 views
0

你如何构建mysql命令用来显示m个数据:N的关系?显示M:N关系数据库

我可以使用连接到显示1:n的关系,但构建m如果:N的关系,创建另一个表,当我试图做同样的,它只能显示一个表加关系表。

例如,我有:

表A中:

  • A_id
  • A_data

表B:

  • B_id
  • B_data

表C:

  • A_A_id
  • B_B_id

我可以显示台,使得我有

A_id | A_data | A_A_id | B_B_id 

了一些数据。

,但我想要的格式是

A_id | A_data | B_id | B_data 

其中A_id对应B_id表C. 我通过外键引用这样一来,使用MySQL的InnoDB引擎。

感谢

+0

第一格式的问题请... – 2012-02-04 09:32:29

+0

3个表之间不会有简单的INNER JOIN吗? SELECT A.A_id,A.A_data,B.B_id,B.B_data FROM C JOIN B ON C.B_B_id = B.B_id JOIN A ON C.A_A_id = A.A_id – wisefish 2012-02-04 11:13:00

回答

2

如果你想C到是查询(即基本上采取表C和加入相应_data行)基表,你可以使用:

SELECT A.A_id, A.A_data, B.B_id, B.B_data 
FROM C 
LEFT JOIN A ON A.A_id = C.A_A_id 
LEFT JOIN B ON B.B_id = C.B_B_id 

这需要的表C和JOIN它s到其他两个表,用C作为基本表(因为LEFT JOIN的)。如果在C行没有在A或B的存在,你只得到了_data领域的相应NULL。

您可能想要查看各种连接(INNER, LEFT, RIGHT,...)以查看您想要的行为。

例如,你可能想存在于表A中的所有ID,以被显示,即使它们不是C(和只是显示用于相应的B列的NULL)等

+0

谢谢。它足以用于提取我需要的信息。我会研究它 – mma1480 2012-02-04 19:46:33