【发布时间】:2012-01-03 12:52:27
【问题描述】:
要从单个表中过滤选定条目的表输出,我需要通过多个表进行多个 JOIN 请求。
我想通过表格中的特殊列过滤人员表格。假设此列是“任务”。现在,tasks 也是另一个包含“people”列的表,并且这两个表之间的值与数据库中现有的“join”表连接,该表将一个表的多个 ID 与另一个表的每个 ID 匹配。
现在,如果这很简单,我可以使用 INNER JOIN 和特殊条件进行过滤。问题是,表“任务”的条目通过数据库中的“连接”表连接到另一个表。为了简化事情,可以说它是“设置”。因此,每个“任务”都由几个“设置”组成,这些“设置”通过其 ID 中的连接表连接。
那么输入是什么?
我有一个 ID 数组,它们代表我不想显示的设置 ID。
输出应该是什么?
如前所述,我想要过滤后的“人”输出,而过滤器是“设置”。
我希望 sql 请求返回表“人”的每个条目,其中仅加入未加入数组中任何“设置 ID”的任务。
我希望你能帮助我。
提前致谢!
示例
设置-表格:
1. 进行中
2. 很重要
3. 有未解决的问题Tasks-Table:(settings.tasks 是许多任务与许多设置之间的连接表)
1. 2012 年 1 月 1 日开始的任务 - 1 和 3 中的 JOINS 设置(进行中 + 未解决的问题)
2. 2012 年 1 月 2 日的任务 - 2 中的 JOINS 设置(很重要)
3. 2012 年 1 月 3 日的任务 - JOINS 设置 1 和 2 (...)People-Table:(people.tasks 是多人到多个任务的连接表)
1. Guy - 加入 1、2、3 中的任务(已分配给所有 3 个任务)
2. Dude - 将任务加入 1(已从 01.01.2012 分配给任务)
3. 女孩 - 加入 2、3 (...) 中的任务现在有一个数组传递给 sql 查询
[2,3] 不应返回 noone,因为每个人都被分配了一项重要的任务或有未解决的问题!
[3] 只会返回“Girl”这个人,因为它是唯一分配给没有未解决问题的任务(2 和 3)的人。
我希望现在很清楚。 :)
【问题讨论】:
-
你的问题很难理解。我们需要通过一些示例数据行查看您的表的结构,然后您需要向我们展示您希望您的结果是什么样的。此外,问题中的文字越少,阅读的人就越多。
标签: mysql sql ruby-on-rails database