0

我已经筛选了帖子以找到我的问题的答案,但我没有运气。所以我想我会创建一个新的,看看社区是否能够帮助我!如果我在描述事物时没有使用正确的 SQL 术语,请原谅我。

这个问题的三个表。表 A 是没有依赖关系的“主”表。表 B 具有对表 A 的外键引用。表 C 具有对表 B 的外键引用。

此查询有两个目标。首先是总结一个字段,比如说fieldC,在表C中。必须满足的唯一条件是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

但我得到的总数是很差的。我在这里犯了一些明显的错误吗?感谢大家的帮助!=)

4

1 回答 1

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 中的字段进行其他操作,例如平均值或求和,则解决方案会稍微复杂一些。

于 2012-12-18T15:37:25.510 回答