基于多表关联条件查询:获取捐赠相关人员及宠物类型信息
嘿,我明白你需要从这几张关联表里拉取已完成捐赠的记录,展示捐赠者、接收者的邮箱和地址,以及对应宠物的类型。我帮你整理了正确的查询语句,还有关键细节说明:
完整SQL查询语句
SELECT -- 捐赠者的邮箱和地址 donor_member.mail_id AS donor_mail, donor_member.address AS donor_address, -- 接收者的邮箱和地址 recipient_member.mail_id AS recipient_mail, recipient_member.address AS recipient_address, -- 捐赠宠物的类型 pet_details.pet_type FROM donation_status -- 关联捐赠者表,绑定到已完成的捐赠记录 JOIN donor ON donation_status.donation_id = donor.donation_id -- 关联接收者表,确保是同一条捐赠记录且对应同一只宠物 JOIN recipient ON donation_status.donation_id = recipient.donation_id AND donor.pet_id = recipient.pet_id -- 关联宠物详情表,获取宠物类型 JOIN pet_details ON donor.pet_id = pet_details.id -- 关联会员表获取捐赠者信息 JOIN members AS donor_member ON donor.member_id = donor_member.id -- 再次关联会员表获取接收者信息(用别名区分) JOIN members AS recipient_member ON recipient.member_id = recipient_member.id WHERE donation_status.status = 'yes';
关键细节解释
- 因为要同时获取捐赠者和接收者的会员信息,我给
members表加了两个别名(donor_member和recipient_member),这样就不会出现字段名称冲突的问题 - 关联
donor和recipient时,除了通过donation_id绑定到同一条捐赠记录,还额外加了donor.pet_id = recipient.pet_id的条件,确保两者对应的是同一只宠物,完全符合你的需求 - 注意:如果你的表之间的关联字段不是
donation_id(比如有的表可能用id作为关联键),请根据你实际的表结构替换成对应的字段名
内容的提问来源于stack exchange,提问作者Monisha
相关产品推荐
相关产品推荐

