我正在尝试正确执行 MYSQL 查询,但它没有做我想要的。
有人员表、任务表和与任务相关联的人员表。这是一个允许用户将人员分配给任务的页面。表具有用户 ID 字段,因为不同的用户正在处理不同的人员和/或任务组。对于每个任务,我想填充一个用户可以分配给任务的人员列表,其中排除任何已分配的人员。
表格如下: 人
id|person|userid
任务
id|task|userid
任务人
id|personid|taskid
我正在使用的查询是:
SELECT p.*,p.id as pid
FROM `people` p
LEFT JOIN `taskperson` tp
on p.id = tp.personid
WHERE p.person LIKE '%$str%' AND p.userid = '1'AND tp.personid NOT IN
(SELECT tp.personid FROM `taskperson` tp WHERE userid = '1' AND tp.taskid = '33' )
GROUP BY p.id
如果您删除 NOT IN 子句,它将为您提供人员列表,但不排除已分配的人员。
如果包含 NOT IN 子句,当表中没有行时,相关用户的 taskperson,即没有人被分配给任务,它不会显示任何人,即返回零行。在这种情况下,它应该显示所有人。
任何人都可以看到我需要改变这个吗?
感谢您的任何建议