gpt4 book ai didi

MySQL - 多重连接关系和行计数

转载 作者:行者123 更新时间:2023-11-29 13:38:54 25 4
gpt4 key购买 nike

我想以良好的性能方法构建 SQL 查询。我需要选择所有类别并计算与此类别相关的波段。

结构:

乐队:

 id       | band_name      |cat_id
----------|----------------|------------
1 | Business 1 | 1
2 | Business 12 | 2
3 | Business 123 | 2

类别:

id        | name           
----------|----------------
1 | Business 1
2 | Business 12
3 | Business 123

连接:

id        | band_id        |cat_id
----------|----------------|------------
1 | 1 | 1
2 | 2 | 1
3 | 2 | 1

查询:

SELECT c.name AS category_name, (SELECT COUNT(icc.band_id) FROM cms_bands_categories_connections AS icc RIGHT JOIN cms_bands AS ib ON icc.band_id = ib.id) AS bands_sum FROM 
cms_bands_categories AS c
JOIN cms_bands_categories_connections AS cc ON
c.id = cc.category_id
GROUP BY
c.id

结果非常奇怪 - 每行的 band_sum 等于 3。不要责怪我的结构 - 由于需求规范的变化,我不得不对其进行修改。

最佳答案

为什么使用子查询而不是聚合?

SELECT c.name AS category_name, COUNT(cc.band_id) AS bands_sum
FROM cms_bands_categories c JOIN
cms_bands_categories_connections cc
ON c.id = cc.category_id
GROUP BY c.id;

您甚至不需要 bands 表来计算它们。该信息位于连接表中。

关于MySQL - 多重连接关系和行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18390349/

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