我有一个人表和一个任务表。虽然一个任务可以由多人完成,所以在两者之间有一个“花名册”表:获取加入者的活动任务
person
task_roster
task
我在寻找返回每个人和他们的当前活动任务的查询。如果他们没有活动的任务,它应该简单地返回NULL。我一直在瞎搞如下:
SELECT *
FROM person
LEFT OUTER JOIN task_roster ON (task_roster.person = person.id)
LEFT OUTER JOIN task on (task.id = task_roster.task AND task.status = 1)
ORDER BY person.name
我在运行过的问题是,该查询返回旧名册条目,所以我多次得到相同的人回来了,因为他们执行的每一先前任务。我也试过在person.name上添加Group By,但是我没有得到任何活动职责,只是NULL值。
我在寻找的restult会是这样的:
+----------------+-----------+----------------+
| person.name | task.id | task.name |
+----------------+-----------+----------------+
| David Harris | 5 | Maintenance |
| Karen Simmons | 2 | Transport |
| Linda Foster | 5 | Maintenance |
| Michael King | NULL | NULL |
+----------------+-----------+----------------+
大卫和琳达都从事相同的任务。名册表无非是当时我不知道这会工作person.id和task.id
你能给出你想要的结果的样本记录吗? –
更新了我的文章。 – Zedicius
我们需要更多信息:示例数据,表格defs和当前(错误)输出..足以启动小提琴。 – ethrbunny