我真的很挣扎。我似乎无法弄明白。我已经掌握了这个概念,但并不完全知道如何将我的简单语言理解为如何将问题解决为正确的语法。
这是一个问题。
列出所有捐赠者及其地址的清单,分类是捐赠艺术品,金钱还是两者兼而有之。
这是表格的设置。
CareTakers:CareTakerID,CareTakerName
捐款:DonationID,DonorID,DonatedMoney,ArtName,ArtType,ArtAppraisedPrice,ArtLocationBuilding,ArtLocationRoom,CareTakerID
捐助者:DonorID,DonorName,DonorAddress
到目前为止,这是我的代码。
SELECT
DISTINCT(DonorName), DonorAddress
FROM
Donors JOIN Donations ON Donors.DonorID = Donations.DonorID
GROUP BY
DonatedMoney
HAVING
DonatedMoney = 'Y' OR DonatedMoney = 'N' OR DonatedMoney = 'Y' AND ArtName IS NOT NULL
任何帮助都将受到高度赞赏!
答案 0 :(得分:1)
为什么要使用having
条款?该问题指定不过滤。以下总结了捐款以获得您所需的信息,然后将结果加入donors
表:
select d.*, don.DonationType
from donors d join
(select don.donorid,
(case when sum(case when donatedmoney = 'Y' then 1 else 0 end) > 0 and
sum(case when artname is not null then 1 else 0 end) > 0
then 'Both'
when sum(case when donatedmoney = 'Y' then 1 else 0 end) > 0
then 'Money'
when sum(case when artname is not null then 1 else 0 end)
then 'Art'
else 'Neither'
end) as DonationType
from donations don
group by don.donorid
) don
on d.donorid = don.donorid