Mysql 如何将这两个查询合并为一个查询?
我知道关于这类话题有很多问题,但我找不到任何对我的问题有帮助的 我有两个工作问题。我想将它们合并到一个查询中。当我尝试合并它们时,显示的数据不正确。但是,当它们分开时,数据是正确的 问题1:Mysql 如何将这两个查询合并为一个查询?,mysql,database,Mysql,Database,我知道关于这类话题有很多问题,但我找不到任何对我的问题有帮助的 我有两个工作问题。我想将它们合并到一个查询中。当我尝试合并它们时,显示的数据不正确。但是,当它们分开时,数据是正确的 问题1: Select Distinct concat(d.FirstName, ' ', d.LastName) as 'Donor', concat('$', sum(a.amount)) as 'Total Paid' From Donor d, Pledge p, Payment a Where d.Dono
Select Distinct concat(d.FirstName, ' ', d.LastName) as 'Donor',
concat('$', sum(a.amount)) as 'Total Paid'
From Donor d, Pledge p, Payment a
Where d.DonorId=p.DonorId
and p.pledgeId = a.pledgeId
group by d.donorid;
输出:
+--------------+------------+
| Donor | Total Paid |
+--------------+------------+
| John Smith | $3500.00 |
| Linda Smith | $250.00 |
| Jack Clinton | $200.00 |
| Jane Doe | $2100.00 |
+--------------+------------+
+--------------+----------+
| Donor | Pocket |
+--------------+----------+
| John Smith | $1750.00 |
| Linda Smith | $100.00 |
| Jack Clinton | $200.00 |
| Jane Doe | $2100.00 |
+--------------+----------+
+--------------+------------+-----------+
| Donor | Total Paid | Pocket |
+--------------+------------+-----------+
| John Smith | $24500.00 | $20750.00 |
| Linda Smith | $1750.00 | $12450.00 |
| Jack Clinton | $1400.00 | $8300.00 |
| Jane Doe | $14700.00 | $8300.00 |
+--------------+------------+-----------+
问题2:
Select Distinct concat(d.FirstName, ' ', d.LastName) as 'Donor',
concat('$', sum(a.amount)) as 'Pocket'
From Donor d, Pledge p, Payment a
Where (a.CompanyId is null)
and d.DonorId=p.DonorId
and p.pledgeId = a.pledgeId
group by d.donorid;
输出:
+--------------+------------+
| Donor | Total Paid |
+--------------+------------+
| John Smith | $3500.00 |
| Linda Smith | $250.00 |
| Jack Clinton | $200.00 |
| Jane Doe | $2100.00 |
+--------------+------------+
+--------------+----------+
| Donor | Pocket |
+--------------+----------+
| John Smith | $1750.00 |
| Linda Smith | $100.00 |
| Jack Clinton | $200.00 |
| Jane Doe | $2100.00 |
+--------------+----------+
+--------------+------------+-----------+
| Donor | Total Paid | Pocket |
+--------------+------------+-----------+
| John Smith | $24500.00 | $20750.00 |
| Linda Smith | $1750.00 | $12450.00 |
| Jack Clinton | $1400.00 | $8300.00 |
| Jane Doe | $14700.00 | $8300.00 |
+--------------+------------+-----------+
合并时:
Select Distinct concat(d.FirstName, ' ', d.LastName) as 'Donor',
concat('$', sum(a.amount)) as 'Total Paid',
concat('$', sum(a2.amount)) as 'Pocket'
From Donor d, Donor d2, Pledge p, Pledge p2, Payment a, Payment a2
where d.donorId=p.donorId
and p.pledgeId = a.pledgeId
and (a2.CompanyId is null)
and d2.DonorId = p2.DonorId
and p2.pledgeId = a2.PledgeId
group by d.DonorId;
输出:
+--------------+------------+
| Donor | Total Paid |
+--------------+------------+
| John Smith | $3500.00 |
| Linda Smith | $250.00 |
| Jack Clinton | $200.00 |
| Jane Doe | $2100.00 |
+--------------+------------+
+--------------+----------+
| Donor | Pocket |
+--------------+----------+
| John Smith | $1750.00 |
| Linda Smith | $100.00 |
| Jack Clinton | $200.00 |
| Jane Doe | $2100.00 |
+--------------+----------+
+--------------+------------+-----------+
| Donor | Total Paid | Pocket |
+--------------+------------+-----------+
| John Smith | $24500.00 | $20750.00 |
| Linda Smith | $1750.00 | $12450.00 |
| Jack Clinton | $1400.00 | $8300.00 |
| Jane Doe | $14700.00 | $8300.00 |
+--------------+------------+-----------+
每一个查询都有一列供捐赠者姓名,还有一列有一些货币值。在我的最后一个查询中,我需要一个包含捐赠者姓名的列,一个标记为“Total Paid”的列,以及一个标记为“Pocket”的列。当我结合这两个查询时,“total paid”列和“pocket”列都被搞乱了
我知道如果没有表模式,这可能很难帮助解决,但我想我应该试一试。提前感谢。试试这个:
select
'Donor',concat('$',sum('Total Paid')) as 'Total Paid',concat('$',sum('Pocket')) as 'Pocket'
from(
Select Distinct concat(d.FirstName, ' ', d.LastName) as 'Donor',
sum(a.amount) as 'Total Paid', 0 as Pocket
From Donor d, Pledge p, Payment a
Where d.DonorId=p.DonorId
and p.pledgeId = a.pledgeId
group by d.donorid
union all
Select Distinct concat(d.FirstName, ' ', d.LastName) as 'Donor',
0 as 'Total Paid',sum(a.amount) as 'Pocket'
From Donor d, Pledge p, Payment a
Where (a.CompanyId is null)
and d.DonorId=p.DonorId
and p.pledgeId = a.pledgeId
group by d.donorid
) group by Donor;
注意:如果您使用的是MySQL数据库,您应该使用
反勾号(“`”)而不是单引号作为列名。谢谢您的建议。这几乎奏效了。当我单独尝试第一个子查询和第二个子查询时,我得到了正确的输出。但是,当我尝试整个过程时,所有结果都显示为0。列标题正确,但所有值均为0。我不知道它为什么会这样做。对这个问题有什么建议吗?