我正在使用Mysql,我有3个表,
横幅(id,type,page)
点击(id,banner_id)
展示次数(id,banner_id)
banner_id 是点击次数和展示次数表格中的外键。我需要生成像这样的行
必填结果表
id, type, clicks_count, impressions_count
Perfomance-wise,用于实现上述结果的最佳mysql查询是什么。
答案 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