我有两个数据库表,一个存储事件,另一个存储该事件的任何相关注释。
数据库表:
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获取评论数量吗?
答案 0 :(得分: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条评论。”)。相反,它正在获得给定用户的最后五条评论。期。
答案 1 :(得分:0)
您可以执行表连接,然后使用COUNT()函数计算与给定event_id关联的注释数量
http://www.w3schools.com/sql/sql_func_count.asp
我想举个例子,但我不完全确定你希望你的最终数据集是什么样的。 COUNT(col)将计算与查询结果相关联的行数