当前位置:  开发笔记 > 编程语言 > 正文

奇怪的是很多很多和一对多的关系

如何解决《奇怪的是很多很多和一对多的关系》经验,为你挑选了1个好方法。

我知道我会得到投票,但我必须确定这是否合乎逻辑.

我有三个表A,B,C.B是一个用于在A和C之间建立多对多关系的表.但问题是A和C也直接在1-many关系中相关

客户添加了以下要求:

从表B内部加入A和C获取信息,并在同一查询中将A和C关联成一对多的关系

就像是:

替代文字http://img247.imageshack.us/img247/7371/74492374sa4.png

我尝试了查询,但总是得到0行.客户坚持认为我可以完成要求,但我对此表示怀疑.任何意见?

PS.我没有更具描述性的标题,任何想法?

更新:感谢rcar,在某些情况下,这可能是合乎逻辑的,以便记录学生所有课程的历史(假设学生一次只能上一节课)

更新:有一个联系人表,一个包含每个联系人信息的表和关系表.要获取联系人的信息,我必须与信息保持1:1的关系,并且每个联系人都可以拥有喜欢和地址簿; 这就是实现许多关系的原因.

完整的想法是获取联系人的姓名和地址簿.现在我得到了客户的想法......我遇到了查询问题,基本上我正在尝试使用jdecuyper编写的查询,但正如他警告的那样,我没有得到任何数据



1> Randy..:

这是一个可行的方案.您可以在查询中将表连接两次,通常为其分配不同的别名以保持正确.

例如:

SELECT s.name AS "student name", c1.className AS "student class", c2.className as "class list"
FROM s
JOIN many_to_many mtm ON s.id_student = mtm.id_student
JOIN c c1 ON s.id_class = c1.id_class
JOIN c c2 ON mtm.id_class = c2.id_class

这将为您提供所有学生姓名和"hardcoded"类的列表,其中包含来自many_to_many表的所有类.

也就是说,这种架构没有逻辑意义.根据我的收集,您希望学生能够拥有多个班级,因此many_to_many表应该是您想要找到与学生相关的班级的地方.如果表s中使用的id_class条目与many_to_many中的id_class条目不同(例如,如果s.id_class指的是仅出现在该表中的homeroom类赋值,而many_to_many.id_class指的是用于信用的类并且不包括homeroom类),你最好把c分成两个表来代替.

如果不是这样的话,我很难理解你为什么要把一个类硬连线到s表.

编辑:刚刚看到你的评论,这是一个虚构的架构举个例子.在其他情况下,这可能是一种明智的做事方式.例如,如果要跟踪公司位置,可能有Company表,Locations表和Countries表.公司表可能有1个链接到您将跟踪公司总部国家/地区的国家/地区,但是通过位置的多对多链接可以跟踪公司拥有商店的每个地方.

如果您可以提供关于架构对客户真正代表什么的真实信息,那么我们可能更容易确定在这种情况下它是否合乎逻辑.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有