1

我有两个数据库表,一个存储事件,第二个存储该事件的任何相关评论。

数据库表:

events: id, owner_id, timestamp
comments: cmt_id, parent_id(events id), cmt_time

我正在尝试根据特定的 owner_id 获取每个事件的最后 5 条评论。

这就是我加入我的桌子的方式:

SELECT * FROM `events` 
LEFT JOIN comments ON comments.parent_id=events.id 
WHERE owner_id=X     
ORDER BY timestamp DESC LIMIT 0,5

知道如何根据 event_id 获取评论数量吗?

4

2 回答 2

1

您的问题是关于每个事件的评论数量(至少按照我的解释)。为此,您想使用group by

SELECT e.event_id, COUNT(c.parent_id) as NumComments
FROM events e left JOIN
     comments c
     ON c.parent_id=e.id 
WHERE e.owner_id = X     
group by e.event_id;

至于您问题中的查询。它不会做您希望它做的事情(“我正在尝试根据特定的 owner_id 获取每个事件的最后 5 条评论。”)。相反,它会获取给定用户的最后五个评论。时期。

于 2013-07-03T17:27:15.457 回答
0

您可以进行表连接,然后使用 COUNT() 函数计算与给定 event_id 关联的评论数

http://www.w3schools.com/sql/sql_func_count.asp

我会举一个例子,但我不完全确定你希望你的最终数据集是什么样子。COUNT(col) 将统计与查询结果关联的行数

于 2013-07-03T16:58:59.547 回答