下面是一个伪 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
使用联接:
select sum(colB * colC)
from t1
join t2 on t2.colD = t1.colD
join t3 on t3.colA = t2.colA
where t1.colE = '1234'