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
所以我有 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