mysql - select 来自 2 个表,按列计数和分组

mysql - select from 2 tables, count and group by column

所以我有 2 个表:

页数:

id    page    visit_id
1      6         65
2      7         65
3      2         66
4      10        67

访问次数:

id    flipbook    
65      april         
66      april         
67      may   

我想return每本动画书的浏览页数:

april: 3 
may: 1

我的查询如下所示:

"SELECT a.flipbook, (SELECT count(b.page) from pages b WHERE a.id = b.visit_id) AS total FROM visits a GROUP BY a.flipbook"

但它 returns:

april: 1 
may: 1

因为它只获得四月的最后一次访问,我们访问了一个页面。

有什么想法吗?

select a.flipbook, count(*)
  from visits a 
    inner join pages p
      on a.id = p.visit_id
  group by a.flipbook

不需要子查询 - 这只是一个基本的连接和聚合。

尝试使用这样的查询

SELECT a.flipbook,COUNT(*) AS total
FROM visits a 
LEFT JOIN pages b ON a.id = b.visit_id
GROUP BY a.flipbook

嗯,有点跑题了...

SELECT v.flipbook
     , COUNT(*) pages_viewed 
  FROM visits v 
  JOIN pages p 
    ON visit_id = v.id 
 GROUP 
    BY v.flipbook;

如果您也想要“0”结果,请使用 OUTER JOIN 并计算其他内容。

您可以尝试使用这样的查询:

SELECT v.flipbook, COUNT(*) AS total
FROM pages p 
LEFT JOIN visits v ON p.visit_id=v.id 
GROUP BY v.flipbook