gpt4 book ai didi

mysql - 获取与 2 个不同表的一对多关系的计数

转载 作者:行者123 更新时间:2023-11-29 03:21:40 24 4
gpt4 key购买 nike

我有 3 个表:1:A

id   name
1 jhon

2:B

id a_id name
1 1 b1
2 1 b2
3 1 b3

3:C

id a_id name
1 1 c1

这里A有很多B和很多C

现在我需要计算与 A 关联的 number of Bnumber of C。我知道这里有 2 个不同的查询可以帮助我检索属于 A 的 B、C 的计数例如:-

 select count(id) from B where a_id=1;
select count(id) from C where a_id=1;

我正在尝试使用连接查询来解决它,例如->

select count(b.id) , count(c.id) from A  a
left join B b on b.a_id = a.id
left join C c on c.a_id = a.id
where a.id = 1;

但它给出了错误的结果

count(b.id) count(c.id)
3 3

这是因为 a 有 3 B 这就是为什么我得到错误的 C 计数结果我可以用子查询解决它,但我不想用子查询或 2 个不同的查询解决它。

伙计们,你能不能在这里用一个查询不使用子查询来解决这个问题。提前致谢。

最佳答案

您可以使用子查询来获取表 BC 的聚合版本:

SELECT A.*, B.cnt_b, C.cnt_c
FROM A
LEFT JOIN (
SELECT a_id, COUNT(*) AS cnt_b
FROM B
GROUP BY a_id
) AS B ON A.a_id = B.a_id
LEFT JOIN (
SELECT a_id, COUNT(*) AS cnt_c
FROM C
GROUP BY a_id
) AS C ON A.a_id = C.a_id
WHERE A.a_id = 1

关于mysql - 获取与 2 个不同表的一对多关系的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43511853/

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