2011-07-08 43 views
6

我想三個表合併在一起,如下所示:MySQL的:合併三個表一起

merge three tables T1, T2 and T3 together

基本上我想包括來自所有三個表T1,T2和T3的項目,並讓他們合併爲顯示在結果表中。我試過這樣的:

SELECT T1.user, T2.tid, T2.name, T3.type, T1.mid 
FROM T1 
LEFT JOIN T2 ON T1.mid = T2.mid 
LEFT JOIN T3 ON T2.tid = T3.tid 
GROUP BY T1.user; 

但它似乎並沒有奏效。它確實顯示結果,但只顯示唯一值。如果user的結果是johny,它將只顯示第一個值並忽略第二個值,儘管它應該在結果表中。

有什麼我失蹤?

+0

因爲'merge-table'不清楚,所以將標籤更改爲'join'。 –

+0

@Michael你是對的。謝謝,沒關係。你知道我怎麼排序用戶。我想我必須在這裏使用ORDER BY。 – Johnydep

+0

ORGER BY用戶ASC/DESC – infinity

回答

3

如果您想查看每個用戶的所有結果,則該組不是必需的。否則,它將隱藏一些行並僅顯示每個用戶一個。

第一次加入T1比T2加右T2比加入T3。如果T1中有元素與T3中的元素沒有連接,那麼這是一個很好的做法,以防止對T字段顯示NULL結果。

SELECT T1.user, T2.tid, T2.name, T3.type, T1.mid 
FROM T1 
RIGHT JOIN T2 ON T1.mid = T2.mid 
LEFT JOIN T3 ON T2.tid = T3.tid; 
+0

謝謝你的回答和解釋。 – Johnydep

+0

是RIGHT JOIN更好。由於我有這個問題,除了上面的查詢外,我還在使用WHERE和T2.tid!='NULL'。再次感謝。 – Johnydep

4

消除GROUP BY。這個查詢中不需要它。

SELECT T1.user, T2.tid, T2.name, T3.type, T1.mid 
FROM T1 
LEFT JOIN T2 ON T1.mid = T2.mid 
LEFT JOIN T3 ON T2.tid = T3.tid; 
+0

謝謝,是的,這正是問題,現在它的工作。 – Johnydep

5

擺脫「分組依據」部分。這應該可以解決你的問題。

+0

非常感謝你,這是問題所在。它現在工作正常 – Johnydep

+0

+1只是爲了彌補下來的選民的驅動器。 –