在我的数据库中,有四种类型的个人,youngOrc
,oldOrc
,youngHuman
,oldHuman
。
个人属于以日期范围为条件的类型。因此,对于每种类型,我都有这样的表:
youngOrcList
-------------------
personal_id,
开始日期,
结束日期
这意味着具有individual_id
的人是开始日期和结束日期之间的youngOrc
。他可能不在这个范围内。同样,我有一个youngHuman
表。
现在,我要过滤的真正感兴趣的表是事件:
大事记
------------------
source_individual_id
target_individual_id
活动日期
事件表记录了我领域中两个人之间的所有事件。我要过滤,以便只在events
和youngOrc
之间选择youngHuman
。
因此,这是一种“嵌套”条件,在该条件下,我同时需要events.source_individual_id IN youngOrcList
和events.event_date BETWEEN youngOrcList.start_date AND youngOrcList.end_date
。如何使这项工作?
(此外,关于更好的标题的任何建议都是很好的。我什至不知道该怎么称呼,因此无法有效地使用Google。)
最佳答案
这将为您提供youngOrc和youngHuman之间的所有事件:
SELECT *
FROM
Events e
WHERE EXISTS (
SELECT * FROM youngHumanList
WHERE individual_id IN (e.source_individual_id, e.target_individual_id)
AND e.event_date BETWEEN start_date AND end_date)
AND EXISTS (
SELECT * FROM youngOrcList
WHERE individual_id IN (e.source_individual_id, e.target_individual_id)
AND e.event_date BETWEEN start_date AND end_date)
关于mysql - MySQL查询嵌套在哪里条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25895230/