考虑,如果你愿意,下表:在一项研究中加入与许多一对多的关系
Vacation Model http://imagetiger.org/images/vacatilrl.png
这似乎是一个奇怪的结构,但让我解释一下。这个结构的目标是创建一个列出所有人的报告,不包括那些在度假(为了简单起见,我们假设假期记录将只存在,如果一个人在度假。)
我有所有假期表都是因为“事件”表是“无关紧要”事件的一般用途表,而“假期”表包含更多详细信息,例如位置和日期。
我似乎无法弄清楚的是如何设计一个查询,包括Person.personId和Vacation.location,但只包含Person_Vacation中存在的那些personIds。或Person_Vacation中不存在的唯一personIds。
此外,这似乎是最好的方式来实现这个解决方案,设计明智吗?关于我可能做了什么错误或建议改进的任何想法?也许我只是不太善于沟通我的意图:事实证明,只有度假的人很容易,但我想进行反演,基本上所有人都不在度假。
这似乎是两个完全简单的查询,查询得到你想要的结果...究竟是什么问题呢?你到目前为止尝试过什么,为什么失败?第一个似乎只是一个简单的JOIN ...你试过吗?第二个不太明显,但是是一个非常普遍的问题 - 记录存在于一个表格中,但不存在于另一个表格中。你知道不存在吗? – 2010-07-04 09:20:32
请确切说出你想要查询的内容 - 就目前而言,你的需求可以用一种方式来解释,这意味着根本不需要外部连接。例如。 'SELECT * FROM Person JOIN Person_Event USING(personId)JOIN Vacation USING(eventId)'向您显示所有和只有那些休假的人(如果他们在多个休假时多次)。 – 2010-07-04 09:30:20
@j_random_hacker:好的。 @马克拜尔斯:如果你不确定它是否在正确的轨道上,不要制定一个标题煽动一些解决方案。 – 2010-07-04 09:33:56