如何对跨多个表的多个值求和

问题描述 投票:0回答:1

下面是一个伪 SQL 查询,它有助于表示我试图使用正在使用的结构实现的逻辑:

 SELECT t3.ColA, t3.ColB FROM t3 WHERE t3.ColA IN (

      SELECT t2.ColA, t2.ColC FROM t2 WHERE t2.ColD IN (

           SELECT DISTINCT t1.ColD FROM t1 WHERE t1.ColE='1234'));

我想检索 SUM(ColB * ColC) ,其中乘法仅发生在 t2.ColA=t3.ColA 配对的情况下

关于我应该如何最好地解决这个问题有什么建议吗?

编辑: 我确实理解上面的查询可能会更好地编写为 JOIN,我对 SQL 相当陌生,所以 JOIN 不是我的强项,如果有人也可以帮助解决这个问题,我将不胜感激。

此处提供了示例表,其中包含用于显示结构/示例的数据。抱歉,我对 StackOverflow 也很陌生。

t1 表:

E 校
27 1234
32 5678
46 9624

t2 表:

ColA ColC
12345 1 27
26743 2 27
43621 3 27
12345 2 46
26743 5 52

t3 表:

ColA ColB
12345 5
26743 10
43621 3

如果对 ColE='1234' 进行此查询,我的预期输出将是:

ColD 选择将是 t1 中的“27”

因此,t2 中的前 3 行将与 t3 中的前 3 行一起被选择。

总和(5 * 1, 10 * 2, 3 * 3) = 34

sql
1个回答
0
投票

使用联接:

select sum(colB * colC)
from t1
join t2 on t2.colD = t1.colD
join t3 on t3.colA = t2.colA
where t1.colE = '1234'
© www.soinside.com 2019 - 2024. All rights reserved.