MySQL中的转换(多对多连接)表;允许重复条目将1列链接到不同表中的多个其他列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL中的转换(多对多连接)表;允许重复条目将1列链接到不同表中的多个其他列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2132字,纯文字阅读大概需要4分钟。
内容图文
![MySQL中的转换(多对多连接)表;允许重复条目将1列链接到不同表中的多个其他列](/upload/InfoBanner/zyjiaocheng/904/683cd662d0d048c59ce51eb3dea8692f.jpg)
好的,所以我将尝试尽可能具体,但我的MySQL技能非常弱.所以情况如下:
我有2张桌子:捐赠者和学生.捐赠者可以与他们想要的尽可能多的学生联系,每个学生可以与捐助者想要“声称”他们的捐助者联系.因此,如果我有一个学生莎莉,她可以让吉姆,一个捐赠者,杰夫,一个捐赠者,与她联系.所以,我把所有学生放在一张桌子上,把所有捐赠者放在另一张桌子里.我需要把它们放在一起,显示学生姓名,身份证和学生所有捐赠者的身份证.
目前我的表是:Donor与DonorID,FirstName,LastName,DonorType,StreetAddress等.然后学生:StudentID,FirstName,LastName和DonorID.但是,这只允许我将学生与一名捐赠者联系起来.所以,我想我需要制作一个转换表,允许我显示StudentID,FirstName(学生),LastName(学生)和DonorID,“声称”该学生并允许我复制StudentID和将不同的DonorID放在同一学生的第2,第3,第4,等等等条目中.
所以,我想我的问题是转换表如何在MySQL中运行;我相信我将需要使用JOIN功能并将两个表连接在一起但是在tizag.com上阅读之后我更加困惑.我使用过Access,当你创建一个转换表时,你可以从每个表中提取PK,并使用其他表中的两个键创建一个复合键,但我不太清楚如何在MySQL中这样做;它是否基本相同,我应该从每个表中拉出PK并将它们连接在第3个过渡表中?
解决方法:
马文是对的.
你需要三张桌子来解决这个问题.
捐赠者
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的顺序显示他们的捐赠者.
内容总结
以上是互联网集市为您收集整理的MySQL中的转换(多对多连接)表;允许重复条目将1列链接到不同表中的多个其他列全部内容,希望文章能够帮你解决MySQL中的转换(多对多连接)表;允许重复条目将1列链接到不同表中的多个其他列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。