【发布时间】:2011-10-25 15:29:16
【问题描述】:
我有两张桌子 -
收入
Id - ProjectId - inAmount
1 - 2 200
2 - 2 100
3 - 1 100
4 - 2 100
5 - 1 200
费用
Id - ProjectId - exAmount
1 - 2 50
2 - 1 100
3 - 2 120
4 - 1 70
现在我想要这些结果
结果
ProjectId - Total Income - Total Expense - Difference
1 result result result
2 result result result
记住:我必须在 SQL 中完成所有这些工作
我已经完成了总收入,总支出,但有什么更好的方法来区分?
-----已编辑......
我试过了
SELECT sum(ex_amount) as expense,
sum(in_amount) as income,
sum(in_amount) - sum(ex_amount) as Difference,
project_name
FROM expense,
project,
income
WHERE expense.projectId = Project.id
AND income.ProejctId = Project.id
group by mh_name";
第二次编辑
好的,请理解原逻辑。表费用与项目有很多记录关系,表收入也有相同的现在我想要每个项目的总收入,每个项目的总费用和每个项目的差异的结果
使用这些字段写下你的答案
收入
in_id - in_source - in_amount
1 - 2 200
2 - 2 100
3 - 1 100
4 - 2 100
5 - 1 200
费用
ex_id - mh_id - ex_amount
1 - 2 50
2 - 1 100
3 - 2 120
4 - 1 70
main_head 或项目
mh_id - mh_name
1 - abc
2 - ase
3 - czz
4 - xys
注意 in_source = mh_id
此时我正在使用以下查询
每个项目的总收入
SELECT sum(in_amount) as amount, mh_name FROM income, main_head WHERE income.in_source = main_head.mh_id group by mh_name Order By amount desc
每个项目的总费用
SELECT sum(ex_amount) as amount, mh_name FROM expense, main_head WHERE expense.mh_id = main_head.mh_id group by mh_name Order By amount desc
由我解决....
SELECT
mh_name,
income - expense AS difference
FROM
(SELECT sum(in_amount) AS income, in_source FROM income GROPU BY in_source) AS t1,
(SELECT sum(ex_amount) AS expense, mh_id FROM expense GROUP BY mh_id) AS t2,
(SELECT * FROM main_head) AS t3
WHERE
t1.in_source = t2.mh_id
AND
t1.in_source=t3.mh_id
【问题讨论】:
-
什么 RDBMS?执行此操作的某些方法并非在所有提供商中都可用。
-
我正在使用 Equi Joining 技术 mySQL
-
这个答案即将收入 21102262000 ex 114719157 dif 20987542843
-
项目表是什么,mh_name是什么?
-
请不要使用隐式连接语法——这样很容易忘记连接条件。