gpt4 book ai didi

sql - 连接和计算来自不同表的行

转载 作者:行者123 更新时间:2023-11-29 14:26:34 25 4
gpt4 key购买 nike

例如,我需要创建一个将事物与人相关联的报告 View 。让我们说属性和狗。 B和C之间没有联系

  • 编号
  • 姓名

属性

  • 编号
  • 姓名

  • 编号
  • 姓名

总而言之,我的报告如下所示:

select a.id, a.name, count(b.*), count(c.*) 
from person a
left join properties b on a.name = b.person
left join dogs c on a.name = c.person;

预期结果是 A 拥有 10 处特性和 20 条狗。

不知何故,这个连接完全乘以属性的数量并说出正确的狗数。如何修复连接?

最佳答案

快速而简单的方法是使用count(distinct):

select a.id, a.name, count(distinct b.id), count(distinct c.id)
from table_a a left join
table_b
on a.name = b.person left join
table_c c
on a.name = c.person
group by a.id, a.name;

使用横向连接或子查询可能更快——尤其是当两个表中有很多行时:

select a.id, a.name,
(select count(*)
from b
where a.name = b.person
),
(select count(*)
from c
where a.name = c.person
),
from table_a a ;

顺便说一句,如果表 a 有一个 id,那应该用于链接到其他表而不是 name

关于sql - 连接和计算来自不同表的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57163453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com