考虑以下情况(简化问题);
Person
可以有一个,几个或零Tool
Task
需要执行一个,几个或零Tool
我希望获得给定Task
所有Person
的列表,假设
Task
需要多个Tool
,则Person
必须包含所有Task
(否则Task
将从列表中排除)Tool
不需要Person
,则始终选择Tool
的{{1}}比Task
中所需的WHERE IN
多,则显然也会选择WHERE NOT IN
我尝试使用WHERE EXISTS
,JOIN
,Task
以及SQL join cheat sheet中的Tool
结构的各种组合来实现这一点。但是没有成功:我总是以所有Person
,没有,或者只有{{1}}拥有至少一个{{1}}的那些来结束...
我使用Doctrine的QueryBuilder,所以如果您有任何想法,请随时回答纯SQL或QueryBuilder。