2013-08-24 69 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绝对正确,谢谢你帮助我找到错误。 非常抱歉再次发布。