使用左连接计算来自另一个mysql表的记录

时间:2013-07-03 16:56:53

标签: mysql sql

我有两个数据库表,一个存储事件,另一个存储该事件的任何相关注释。

数据库表:

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获取评论数量吗?

2 个答案:

答案 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)将计算与查询结果相关联的行数