基于一张引用表JOIN多张表并统计记录
Posted
技术标签:
【中文标题】基于一张引用表JOIN多张表并统计记录【英文标题】:JOIN multiple tables based on one reference table and count records 【发布时间】:2020-10-01 02:18:30 【问题描述】:我有以下表格:
汽车:
id manufacturer
--------------------
1 Nissan
2 Toyota
3 Honda
4 Volkswagen
类型:
id type car_id
--------------------------------------------
1 maxima 1
2 civic 3
3 accord 3
4 corolla 2
5 altima 1
颜色:
id color car_id
———————————--------------------
1 yellow 1
2 blue 2
3 blue 1
4 black 4
5 red 1
想要的表:
car_id total_type total_colors
————————————————---------------------------
1 2 3
2 1 1
3 2 0
4 0 1
我怎样才能得到结果表?我宁愿不使用 with 子句。 CROSS JOIN
会是最佳方式吗?
【问题讨论】:
【参考方案1】:似乎可以使用 2 个 LEFT JOIN 和 COUNT DISTINCT 聚合函数来完成。像这样的
select c.id, count(distinct t.id) total_type, count(distinct co.id) total_colors,
from cars c
left join [types] t on c.id=t.car_id
left join colors co on c.id=co.car_id
group by c.id
order by 1;
【讨论】:
以上是关于基于一张引用表JOIN多张表并统计记录的主要内容,如果未能解决你的问题,请参考以下文章