2016-07-31 2 views
0

この問題の助けが必要です。私は次の表を持っていますが、以下のような記述とクエリに基づいてデータを取得できないようです。個々の同窓生とビジネス援助者の寄付金をすべて記載してください。氏名、寄付者のID、寄付金の日付と金額を表示する必要があります

  • コーポレート(CorporateID(PK)、CorporateName、CorporateAddress)
  • 寄付(DonationID(PK)、TypeOfDonations)
  • 卒業生(AlumnusID(PK)、CityPK(FK)、 AlumnusName、のEmailAddress、WorkPhoneNumber、HomePhoneNumber、
  • Donation_Made(CorporateDonationID(PK)、DonationID(FK)、CorporateID(FK)、AlumnusID(FK)をアドレス、DonationAmount、DateOfDonation

    SELECT Z.DONATIONID, A.ALUMNUSNAME, C.CORPORATENAME, Z.DATEOFDONATION, Z.DONATIONAMOUNT FROM ALUMNUS A, (SELECT * FROM DONATION D LEFT JOIN DONATION_MADE DM ON D.DONATIONID = DM.DONATIONID)Z LEFT JOIN CORPORATE C ON C.CORPORATEID = DM.CORPORATEID AND A.ALUMNUSID=DM.ALUMNUSID AND Z.TYPEOFDONATIONS= 'MONETARY';

+1

をそれを持って、そして望ましい結果を得る。 – trincot

+0

特に、「Donation_Made」の「CorporateID」と「AlumnusID」が互いにどのように関連しているかを知る必要があります。彼らは1)いつも両方とも埋まっていますか?または2)常に1つだけ記入されていますか?または、3)「Donation_Made」のいずれかの行に対して、どちらか一方または両方が記入されますか? – RBarryYoung

+0

こんにちはバリー、彼らが記入される必要はありません。 – Alan

答えて

0

は、両方の企業や卒業生のテーブルからデータを取得するために、外部結合を使用する必要があります。

select a.AlumnusID, a.AlumnusName, c.CorporateID, c.CorporateName, dm.DateOfDonation, dm.DonationAmount 
from Donation_Made dm 
left outer join on Alumnus a on dm.AlumnusID = a.AlumnusID 
left outer join on Corporate c on dm.CorporateID = c.CorporateID 
inner join on Donation d on dm.DonationID = d.DonationID 
where d.TypeOfDonations='MONETARY'; 
0

あなたは、ファクトテーブルで始まるすなわちDONATION_MADE、その後、(外側)の関連テーブルに参加すべきである:サンプルデータ、あなたがあなたのクエリで取得する結果、問題を提供してください

SELECT  DM.DONATIONID, 
      A.ALUMNUSNAME, 
      C.CORPORATENAME, 
      DM.DATEOFDONATION, 
      DM.DONATIONAMOUNT 
FROM  DONATION_MADE DM 
INNER JOIN DONATION D 
     ON D.DONATIONID = DM.DONATIONID 
LEFT JOIN ALUMNUS A, 
     ON A.ALUMNUSID = DM.ALUMNUSID 
LEFT JOIN CORPORATE C 
     ON C.CORPORATEID = DM.CORPORATEID 
WHERE  D.TYPEOFDONATIONS = 'MONETARY'; 
関連する問題