mysql中间过渡表_MySQL中的转换(多对多连接)表;允许重复条目将1列链接到不同表中的多个其他列...

马文是对的.

你需要三张桌子来解决这个问题.

捐赠者

DonorID

FirstName

LastName

DonorType

StreetAddress

etc.

学生

StudentID

FirstName

LastName

etc.

那你需要Student_Donor.这通常称为连接表,并实现多对多关系.

StudentID (PK) (FK to Student)

DonorID (PK) (FK to Donor)

DonorOrdinal

如果StudentID = 5有四个ID = 6,7,11,15的捐赠者,那么你就有这些行

StudentId DonorId DonorOrdinal

5 6 1

5 7 2

5 11 3

5 15 4

DonorOrdinal列允许您指定学生的主要捐赠者和次要捐赠者.我无法从你的问题中看出这是多么重要,但能够订购这些东西是有帮助的.请记住这一点:正式来说,SQL SELECT查询以不可预测的顺序返回行,除非您还指定了ORDER BY.

如果您想展示您的学生及其捐赠者,您将需要以下查询:

SELECT s.StudentID, s.FirstName, s.LastName,

sd.DonorOrdinal,

d.DonorType, d.DonorID, d.FirstName, d.LastName

FROM student s

LEFT JOIN student_donor sd ON s.StudentID = sd.StudentID

LEFT JOIN donor d ON sd.DonorID = d.DonorID

ORDER BY s.StudentID, sd.DonorOrdinal, d.DonorID

这将按照ID的顺序显示所有学生(无论是否有LEFT JOIN的捐赠者),然后按DonorOrdinal的顺序显示他们的捐赠者.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值