2012-02-04 81 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