我在创建mysql查询时遇到问题。
有两个表t1和t2。
t1表格包含以下列
id, (primary key)
qty,
type (either 'pb' or 'hb')
t2列有以下列
id, (foreign key of t1 table)
pb, (contains the amount)
hb, (contains the amount)
现在,在t1表的类型列中,可以有任何值' pb'和' hb' (你可以看到t2表中的列。)
现在我想要包含以下列的所有记录
数量列的ID,数量,金额和总和 我使用以下查询成功获取id,qty,amount
select t1.id,t1.qty,case type when 'pb' then t2.pb else t2.hb end as amount from t1 inner join t2 on t1.id = t2.id
但我不知道如何获取此查询后生成的amount列的总和,我必须使用单个查询或过程来执行此操作?
任何人都可以帮助我吗?
假设t1表有数据
id|qty| type
1 | 4 | pb
2 | 6 | hb
和t2表有数据
id | pb | hb
1 | 300 | 500
2 | 400 | 600
我想要的是
id | qty | amount
1 | 4 | 300
2 | 6 | 600
和金额列的总和,即900
答案 0 :(得分:0)
我认为这就是你想要的:
select t1.id, t1.qty,
(case when t1.type = 'pb' then t2.pb else t2.hb end) as amount
from table1 t1 left join
table2 t2
on t1.id = t2.id;
这看起来像是一个神秘的数据结构。您可以考虑对表2中的数据进行规范化,因此每个ID和类型都有一行。