选择双重多对多关系

时间:2014-12-04 14:56:21

标签: sql doctrine-orm

考虑以下情况(简化问题);

enter image description here

  • Person可以有一个,几个或零Tool
  • Task需要执行一个,几个或零Tool

我希望获得给定Task所有Person的列表,假设

  • 如果Task需要多个Tool,则Person必须包含所有Task(否则Task将从列表中排除)
  • 如果Tool不需要Person,则始终选择
  • 如果Tool的{​​{1}}比Task中所需的WHERE IN多,则显然也会选择WHERE NOT IN

我尝试使用WHERE EXISTSJOINTask以及SQL join cheat sheet中的Tool结构的各种组合来实现这一点。但是没有成功:我总是以所有Person,没有,或者只有{{1}}拥有至少一个{{1}}的那些来结束...

我使用Doctrine的QueryBuilder,所以如果您有任何想法,请随时回答纯SQL或QueryBuilder。

0 个答案:

没有答案