2010-08-24 80 views
1

OK,我們開始吧...JOIN 3個表查詢

我有3個表:文章,評論和成員,我需要從成員的評論和用戶名,得到的職位頭銜,味精。 所有表具有相同的ID關聯

例如(?):我想從某些ID這些數據...

對不起我的英語不好,是不是我的語言,我很MySQL基本技能(今天開始)。

編輯: 這是我的架構:

posts: |ID|title| 
      ---------------- 
      |1 |post title|  (example data) 

comments: |USERID|UID|msg| (UID is same as posts.ID) 
      ----------------- 
      |5  |1 |message| (example data)  

members: |USERID|username| 
      ----------------- 
      |5  |myusername| (example data) 

當我做一個查詢ID 80(例如)將返回標題,有關該職位(UID)的消息和用戶名關聯那個評論。

例如。如果帖子80有5條評論顯示,帖子的標題和評論的用戶名。

我認爲這更清楚。 (不是嗎?)

+1

顯示模式。你可以張貼'描述';'語法來給出一些信息。 – extraneon 2010-08-24 13:30:07

+0

每個表的外鍵是什麼 - 將每個表與其他表匹配的列? – Russ 2010-08-24 13:34:16

回答

2

也許是這樣的:

SELECT P.Title, C.Message, M.Username 
FROM Posts P 
INNER JOIN Comments C ON P.PostID = C.PostID 
INNER JOIN Memmbers M ON C.MemberID = M.MemberID 
WHERE P.PostID = 123 

這是你的架構(我認爲我是更好的,這就是爲什麼我離開它):)

SELECT P.title, C.msg, M.username 
FROM posts P 
INNER JOIN comments C ON P.ID = C.UID 
INNER JOIN memmbers M ON C.USERID = M.USERID 
WHERE P.ID = 80 

文章標題在這種情況下會重複,但我相信這是你要求的。

+0

這就是謝謝你! – greenbandit 2010-08-24 14:21:01

0

沒有看到你的方案我只能猜測,但我認爲它可能是這個樣子:

SELECT p.title, c.msg, m.username 
FROM Posts p 
INNER JOIN Comments c ON (p.AssociateID = c.AssociateID) 
INNER JOIN Members m ON (m.AssociateID = p.AssociateID) 
WHERE p.AssociateID = 123 

如果你的模式是不同的,調整上面的SQL,以適應你的表結構。

0

您的所有表結構的第一(單數表名)看起來應該是這樣的:

後: ID 標題 member_id

評論: ID 味精 POST_ID member_id

成員: ID 用戶名

SELECT p.title, c.msg, m.username 
FROM comment c 
INNER JOIN post p ON p.id = c.post_id 
INNER JOIN member m ON m.id = p.member_id 
WHERE m.id = YOURUSERIDGOESHERE 
0

你也可以這樣做:

SELECT P.Title, C.Message, M.Username 
FROM Posts P, Comments C, Members M 
WHERE P.ID = C.UID 
AND C.USERID = M.USERID 
AND P.PostID = 80 

這將產生相同的結果作爲連接其他幾個人的建議,但有些人覺得WHERE顯示關係更清楚。這只是個人喜好的問題。