Closed. This question needs details or clarity。它目前不接受答案。
想改进这个问题吗?添加细节并通过editing this post澄清问题。
四年前关闭。
我修改了我的问题。希望这有帮助。。。。
我有两张桌子
表1包含以下字段
身份证件,
收入
亚收入阶层
表2包含以下字段
身份证件,
收入来源,
数量
我试图在mySQL中创建一个SQL查询,从中获取表1中的所有唯一记录(tabel1.Incomehead),并从表2中获取amount的总和(table2.amount),其中table1.Incomehead=table2.Incomehead。对于特定的table1.incomehead,如果table2.amount不存在,我还需要显示“0”。表1中的主键是Incomehead和SubIncomehead。因此,有一种情况下,相同的收入将重复如下所述
快照
表1
表2
预期结果
当Incomehead有一个唯一的记录时,下面的答案有效。但是,当有多个值相同的记录时,它会给出不同的结果
希望这一点澄清,并期待您的支持
SQL Fiddle Demo
这将给你:
附带说明:您应该在两个表之间创建外键,而不是使用字符串值在它们之间连接,
想改进这个问题吗?添加细节并通过editing this post澄清问题。
四年前关闭。
我修改了我的问题。希望这有帮助。。。。
我有两张桌子
表1包含以下字段
身份证件,
收入
亚收入阶层
表2包含以下字段
身份证件,
收入来源,
数量
我试图在mySQL中创建一个SQL查询,从中获取表1中的所有唯一记录(tabel1.Incomehead),并从表2中获取amount的总和(table2.amount),其中table1.Incomehead=table2.Incomehead。对于特定的table1.incomehead,如果table2.amount不存在,我还需要显示“0”。表1中的主键是Incomehead和SubIncomehead。因此,有一种情况下,相同的收入将重复如下所述
快照
表1
1|Subscription|Membership
2|Donation|Charity
3|Collection
4|Subscription|Carpark
5|Donation|Youth
表2
1|Subscription|100
2|Donation|100
3|Subscription|500
预期结果
Subscription|600
Donation|100
Collection|0
当Incomehead有一个唯一的记录时,下面的答案有效。但是,当有多个值相同的记录时,它会给出不同的结果
希望这一点澄清,并期待您的支持
最佳答案
您不需要UNION
。只需JOIN
这两个表,并将SUM
与group by
一起使用:
SELECT
t1.incomehead,
SUM(COALESCE(t2.amount, 0)) AS Total
FROM table1 AS t1
LEFT JOIN table2 AS t2 ON t1.incomehead = t2.incomehead
GROUP BY t1.incomehead
ORDER BY total DESC;
LEFT JOIN
将包括第一个表事件中的那些项,如果第二个表中没有匹配的行,那么它将有amount
空值。SQL Fiddle Demo
这将给你:
| Incomehead | Total |
|--------------|-------|
| Subscription | 600 |
| Donation | 100 |
| Collection | 0 |
附带说明:您应该在两个表之间创建外键,而不是使用字符串值在它们之间连接,
incomehead
的字符串值不应该在两个表之间重复。相反,将其从第二个表中移除,并创建一个新的键incomeheadID
,该键将是第一个表的外键。07-24 15:00