我通过帖子筛选找到问题的答案,但我没有运气。所以我想我会创建一个新的,看看社区是否能够帮助我!如果我在描述事情时没有使用正确的SQL术语,请原谅我。
这个问题有三个表。表A是没有依赖关系的“主”表。表B具有表A的外键引用。表C具有表B的外键引用。
此查询有两个目标。首先是在表C中总结一个字段,比如fieldC,唯一必须满足的条件是A中的字段,比如fieldA,必须等于,比方说X.公平地说,这个解决方案很简单:
SELECT Sum(C.fieldC) FROM C
INNER JOIN B
ON C.foreign_keyB = B.id
INNER JOIN A
ON B.foreign_keyA = A.id
WHERE fieldA = X
好的,现在第二个目标:我想计算表A中与fieldA = X匹配的行数。我试过这个:
SELECT Sum(C.fieldC), Count(A.id) FROM C
INNER JOIN B
ON C.foreign_keyB = B.id
INNER JOIN A
ON B.foreign_keyA = A.id
WHERE fieldA = X
但是我的总数还有很多。我在这里犯了一些明显的错误吗?感谢大家的帮助! =)
答案 0 :(得分:1)
在这种情况下,您可以使用count distinct
修复问题:
SELECT Sum(C.fieldC), Count(distinct A.id)
FROM C
INNER JOIN B
ON C.foreign_keyB = B.id
INNER JOIN A
ON B.foreign_keyA = A.id
WHERE fieldA = X
如果你想对A中的字段进行其他操作,例如平均值或总和,那么解决方案会有点复杂。