Php 用于显示未分配到项目的员工的MySQL查询

Php 用于显示未分配到项目的员工的MySQL查询,php,mysql,Php,Mysql,我目前正在创建一个应用程序,它将为某个项目分配员工。这些员工可以被转移到一个项目中,也可以重新投入到该项目中 我有这些桌子: employees_tbl id first name last name projects_tbl id name project_assignment_tbl id project_id employee_id date_removed (NULL) 因此,每次我们将用户删除到项目中时,project\u assignment\u tbl中的date\u rem

我目前正在创建一个应用程序,它将为某个项目分配员工。这些员工可以被转移到一个项目中,也可以重新投入到该项目中

我有这些桌子:

employees_tbl
id
first name
last name

projects_tbl
id
name

project_assignment_tbl
id
project_id
employee_id
date_removed (NULL)
因此,每次我们将用户删除到项目中时,
project\u assignment\u tbl
中的
date\u removed
列将带有日期/时间戳,每次我们向项目添加员工时,一个新的数据将被插入到
项目任务中\u tbl
我之所以这样做,是因为在我的应用程序中,我也想获得项目任务历史记录

因此,在我的应用程序中,我将转到一个特定的项目(
/project/1
),然后我将从那里分配一名员工

我这里的问题是,如何显示/查询未分配给特定项目的员工列表?这听起来很简单,但是我在如何显示以前分配的用户以及在项目中删除的用户方面遇到了问题,但是我想再次显示这些用户,因为它们已被删除到特定项目中


非常感谢您的帮助!谢谢大家!

如果您的意思是从未分配给项目:

SELECT e.*
FROM employees_tbl e
WHERE e.id NOT IN (SELECT employee_id
    FROM project_assignment_tbl
    WHERE project_id=1234) // sample project ID
SELECT e.*
FROM employees_tbl e
WHERE e.id NOT IN (SELECT employee_id
    FROM project_assignment_tbl
    WHERE project_id=1234 AND date_removed IS NULL)
如果您的意思是当前未分配给项目:

SELECT e.*
FROM employees_tbl e
WHERE e.id NOT IN (SELECT employee_id
    FROM project_assignment_tbl
    WHERE project_id=1234) // sample project ID
SELECT e.*
FROM employees_tbl e
WHERE e.id NOT IN (SELECT employee_id
    FROM project_assignment_tbl
    WHERE project_id=1234 AND date_removed IS NULL)

现在未分配或从未分配?发布一些示例数据和预期结果。我有一个建议,可以消除所有这些痛苦,从“项目分配”tbl中删除“删除日期”列,添加一个新表作为删除操作的日志,现在,每当您想要删除员工时,您只需要从表中删除该行并在历史记录日志表中添加一行,这将简化所有事情@AbdoAdel-只需在现有表中包含一个布尔值就更有意义了。可以使用已删除的
(真/假)。删除时,将
is\u deleted
设置为true,并将时间戳添加到
date\u removed
。比在表之间无序移动数据更有意义。。。如果您想将其恢复,请将
被删除
更改为false,并从
删除日期
@WadeShuler中删除时间戳,但他需要跟踪所有删除操作。可能会将
员工id
设置为NULL。
project\u assignment\u tbl
中员工id为空的所有内容都是未分配给个人的项目。--我浏览了一下,因为他没有花时间提供任何代码。。