内部连接2个表并计算每个外键的出现次数

时间:2015-05-13 09:30:17

标签: mysql sql

我正在使用Mysql,我有3个表,

横幅(id,type,page)

点击(id,banner_id)

展示次数(id,banner_id)

banner_id 点击次数展示次数表格中的外键。我需要生成像这样的行

必填结果表

id, type, clicks_count, impressions_count

Perfomance-wise,用于实现上述结果的最佳mysql查询是什么。

1 个答案:

答案 0 :(得分:1)

只需JOIN三个表格,使用COUNT()GROUP BY

select id, type, count(c.id) clicks_count, count(i.id) as impressions_count
from banners b
  left join clicks c on b.id = c.banner_id
  left join impressions i on b.id = i.banner_id
group by id, type

或使用相关的子查询来计算:

select id, type,
       (select count(*) from clicks c where b.id = c.banner_id) clicks_count,
       (select count(*) from impressions i where b.id = i.banner_id) impressions_count
from banners b