Sql 基于其他表中使用的外键访问表中的所有行
我是SQL新手,所以在尝试了很多之后,我找不到合适的解决方案 在堆栈溢出上。这就是我发布问题的原因。[可能是重复的问题 [问题] 我有两张表T1和T2。 结构如下:Sql 基于其他表中使用的外键访问表中的所有行,sql,Sql,我是SQL新手,所以在尝试了很多之后,我找不到合适的解决方案 在堆栈溢出上。这就是我发布问题的原因。[可能是重复的问题 [问题] 我有两张表T1和T2。 结构如下: Tables: T1: Task Category Estimated_Cost 1 9100 100 2 9100 15 3 9100 6 4 9200 8 5
Tables:
T1:
Task Category Estimated_Cost
1 9100 100
2 9100 15
3 9100 6
4 9200 8
5 9200 11
T2:
Voucher Task Actual_Cost
1 1 10
2 1 20
3 1 15
4 2 32
5 4 8
6 5 3
7 5 4
我希望结果如下:
Category Estimated_Cost Actual_Cost
9100 121 77
9200 19 15
要对此使用哪个查询?Hmmm。这里有一种方法:
select category, sum(estimated_cost) as estimated_cost, sum(actual_cost) as actual_cost
from ((select t1.category, t1.estimated_cost, 0 as actual_cost
from t1
) union all
(select t1.category, 0, t2.actual_cost
from t2 join
t1
on t1.task = t2.task
)
) cc
group by category;
嗨,谢谢。它正在工作。但在MySQL工作台中,它显示返回的2行,但不显示为表中的行。您好,我重新启动了MySQL工作台。现在它正在展示桌子。谢谢。你能研究一下这个问题吗:问题的一半(特别是当你刚接触某件事时)是知道如何描述它,知道该问什么:你想要的是
估计成本
和实际成本
,按类别分组。为了获得实际成本的总和
,您需要将任务
上的两个表连接起来。根据表中的数据类型和输出内容,您可能希望执行左联接或内部联接。祝你好运
select *
from
(select t1.category, sum(t1.estimated_cost) estimated_cost
from t1
group by t1.category
) A
join
(select t1.category, sum(t2.actual_cost) actual_cost
from t2
join t1 on t1.task = t2.task
group by t1.category
) B
on A.category = B.category