加入3个表并计算不同的字段

时间:2014-08-18 09:01:55

标签: mysql sql count group-by left-join

我有一个查询,其中我遍历项目列表(警报),这些警报有回复,我想知道警报/项目有多少回复,这些警报/项目也有某种类似(交互)按钮我想知道有多少人喜欢它,现在我有这个查询,它给了我多少回复,但我不知道如何计算它有多少次互动...有人可以看看在它,也许帮助我?

到目前为止,这是我的查询:

SELECT a.title, a.lat, a.lon, a.alert_content_id, a.date_added, count(*) FROM `alerts` a 
   LEFT JOIN `reply` r ON 
       r.alert_id = a.alerts 
   LEFT JOIN `interactions` i ON 
      i.alert_id = a.alerts 
   GROUP BY a.title, a.lat, a.lon, a.alert_content_id, a.date_added

现在这个计数会返回回复的数量,我如何计算交互次数呢? 这就是期望的结果

|a.title|a.lat|a.lon|a.alert_content_id|a.date_added|count(replies)|count(interactions)|

计数回复是a.alerts == r.alert_id的行数 和计数互动是a.alerts == i.alert_id

的行数

1 个答案:

答案 0 :(得分:0)

所以经过一番更加努力后,我找到了答案,这正是我所需要的。

SELECT a.title, a.lat, a.lon, a.alert_content_id, a.date_added, count(r.alert_id) as countRep ,count(i.alert_id) AS countInt 
FROM `alerts` a 
      LEFT JOIN `reply` r ON 
         r.alert_id = a.alerts 
      LEFT JOIN `interactions` i ON 
         i.alert_id = a.alerts 
GROUP BY a.title, a.lat, a.lon, a.alert_content_id, a.date_added