gpt4 book ai didi

php - Mysql SUM 查询未返回预期结果

转载 作者:行者123 更新时间:2023-11-30 22:33:54 25 4
gpt4 key购买 nike

你好,我寻求帮助,看看我的查询有什么问题,它没有从表 consulta 返回行数(数量),其中 userIDC 等于表 users 的 userID。以及来自表 asesoria 的 userIDC 的相同操作。

SELECT c.*, SUM(IF(a.userIDA = c.userID , 1, 0)) AS count_asesoria, SUM(IF(s.userIDC = c.userID , 1, 0)) AS count_consulta
FROM users as c
LEFT JOIN consulta AS s ON s.userIDC = c.userID
LEFT JOIN asesoria AS a ON a.userIDA = c.userID
GROUP BY c.userID DESC

现在它为 count_asesoriacount_consulta 返回相同的结果

表用户:

userID | Data    |
------------------
3 | content |

表格咨询a

userIDC | Data   |
------------------
3 | content |
3 | content |

所以 count_consulta 必须返回 2

最佳答案

问题的最可能原因是连接中表之间的笛卡尔积。正确的解决方案是在查询之前预先聚合结果。或者,使用相关子查询。在这种情况下,这可能是最简单的方法,并且可能具有最佳性能:

SELECT u.*,
(SELECT COUNT(*)
FROM consulta c
WHERE c.userIDC = u.userId
) as count_consulta,
(SELECT COUNT(*)
FROM asesoria a
WHERE a.userIDA = u.userId
) as count_asesoria
FROM users u;

为了获得最佳性能,您需要在 consulta(userIDA)asesoria(userIDA) 上建立索引。

关于php - Mysql SUM 查询未返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092531/

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