0

我正在尝试从 1 中的 3/4 表中获取以下数据Mysql query,想知道是否可能?这些表是

TOPIC
topicid (FK)(PK)
groupid
topic
user

LIKED
likeid
topicid (FK)
user

COMMENT
commentid (PK)
topicid (FK)
comment
user

我用唯一的 topicid 编写我的主题并存储在 TOPIC 表中。我使用 groupid 对每个主题进行分组。其他表的每个 topicid 可能有 0 个或更多数据。

我正在尝试获取特定组的每个主题,并从相关表中获取其他数据。我检查了如何在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我遗漏的任何具体问题吗

4

1 回答 1

0

非常抱歉浪费了您的时间,经过彻底重新检查后,我发现我的表数据有误(在制作 sqlfiddle 后检查过,感谢@Barmar)。

我错误地在赞和评论表中插入了错误的数据。所以错误地插入了第二个主题topicid='2'的点赞和评论,因为这就是为什么细节只显示在第一个主题中而没有出现第二个主题的原因。groupid='1'topicid='1'

上面的SQL是绝对正确的,谢谢你帮我找错了。非常抱歉再次发帖。

于 2013-08-25T07:01:03.243 回答