2013-08-24 99 views
0

我想從1個Mysql query中的3/4個表中獲取以下數據,想知道是否有可能?這些表是Mysql左連接多個1到多個表

TOPIC 
topicid (FK)(PK) 
groupid 
topic 
user 

LIKED 
likeid 
topicid (FK) 
user 

COMMENT 
commentid (PK) 
topicid (FK) 
comment 
user 

我寫我的主題,並存儲在具有唯一topicid的主題表。我使用groupid將每個主題分組。 其他表格每個topicid可能有0個或更多的數據。

我正在嘗試獲取特定組的每個主題,並從相關表中獲取其他數據。我檢查了How to left join multiple one to many tables in mysql?,但沒有什麼想法,但這是爲了計數,而我想從該表(喜歡的用戶)和(用戶及其評論)獲取詳細信息。

我已經試過

SELECT t.topicid, 
     topic, 
     group_concat(DISTINCT likeid,l.user SEPARATOR '|'), 
     group_concat(DISTINCT commentid,comment,c.user SEPARATOR '|') AS comments 
FROM TOPIC t 
LEFT JOIN LIKE l ON l.topicid = t.topicid 
LEFT JOIN COMMENT c ON c.topicid = t.topicid 
WHERE t.groupid='some_value' 
GROUP BY t.topicid 

雖然這部分工作如我確實瞭解了細節,但只有在小組中有一個主題的情況下。如果組中有2個或更多主題,則concat詳細信息僅存儲在第一條記錄中,而後面的主題不會顯示任何喜歡和評論。

是否有人可以幫我解決這個或任何特定Mysql function我缺少

+0

我很困惑。您正在通過'topicid'加入和分組。然後你抱怨多個主題在一個組中時沒有獲得多個值。你想按groupid排序嗎? –

+0

您可以使用示例數據構建一個sqlfiddle,並顯示期望的結果應該是什麼? – Barmar

+0

@Barmar我在[link](http://sqlfiddle.com/#!2/9ab57/1/0)上試過sqlfiddle。 –

回答

0

我非常浪費你的時間很遺憾,經過徹底的重新檢查,我發現我的表中的數據是錯的(製作sqlfiddle後檢查感謝@Barmar)。

我錯誤地在喜歡和評論表中插入錯誤的數據。所以對於第二主題topicid='2'的第二個主題topicid='2'被錯誤地插入爲topicid='1',這就是爲什麼細節僅在第一主題中顯示並且沒有任何內容出現在第二主題中。

上面的SQL絕對正確,謝謝你幫助我找到錯誤。 非常抱歉再次發佈。