【发布时间】:2013-08-24 20:36:04
【问题描述】:
我正在尝试从 1 Mysql query 的 3/4 表中获取以下数据,想知道是否可能?表格是
TOPIC
topicid (FK)(PK)
groupid
topic
user
LIKED
likeid
topicid (FK)
user
COMMENT
commentid (PK)
topicid (FK)
comment
user
我用唯一的 topicid 编写我的主题并存储在 TOPIC 表中。我使用 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 详细信息仅存储在第一条记录中,后面的主题不显示喜欢和 cmets。
有人可以帮我更正这个或任何特定的Mysql function我失踪了
【问题讨论】:
-
我很困惑。您正在通过
topicid加入和分组。然后你抱怨多个主题在一个组中时没有得到多个值。是否要按 groupid 排序? -
你能用示例数据制作一个 sqlfiddle,并显示所需的结果吗?
-
@Barmar 我在link 尝试了sqlfiddle。
-
@GordonLinoff 如果我按 groupid 分组,我将不会获得该组的单独主题。我想要的结果是
groupid= '1'的 3 个topicid,topics的点赞数,每个topicid喜欢的用户得到了这个groupid的 cmets 数量,每个topicid的用户和评论得到了这个groupid