0
我知道这类话题有很多问题,但我找不到任何有助于解决问题的问题。如何将这两个查询合并到一个查询中?
我有两个工作查询。我想将它们组合成一个查询。当我尝试合并它们时,显示的数据不正确。但是,当他们分开时,数据是正确的。
查询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.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 |
+--------------+------------+
问题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 | Pocket |
+--------------+----------+
| John Smith | $1750.00 |
| Linda Smith | $100.00 |
| Jack Clinton | $200.00 |
| Jane Doe | $2100.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 | 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 |
+--------------+------------+-----------+
每个人都有捐助者的名字列,并与一些货币值的列。在我的最后一个查询中,我想要一个包含捐助者名称的列,一个标记为“全额付款”的列和一个标记为“口袋”的列。当我将这两个查询结合起来时,“总收入”列和“口袋”列全部搞砸了。
我知道这可能很难帮助没有表架构,但我想我会给它一个镜头。提前致谢。
感谢您的建议。这几乎可行。当我自己尝试第一个子查询并且当我尝试第二个子查询时,我会得到正确的输出。但是,当我尝试整件事时,所有内容都显示为0.列标题是正确的,但所有值都是0.我不知道为什么它会这样做。有关这个问题的任何建议? – ethanm1