1

我认为这可能是一个简单的问题,但我只是在想最有效的方法来做我想做的事。

我所拥有的是一个允许经理在他们自己的部门内编辑用户的页面。这在最基本的情况下工作得很好,我运行一个查询来返回所有用户 WHERE Department= manager department

这将返回同一部门内的所有用户。我想做的是扩展它,因为一些经理负责多个部门,并希望能够编辑来自各个部门的用户。

我的想法是有一个部门表,其中包含用户条目。然后每个部门都会有一个列,我会将经理负责的每个部门的值设置为 Yes。

然后,棘手的部分是根据该信息调整查询。你们都认为查询该行的最佳方式是什么,对于每个值为 Yes 的字段,在查询中添加部门作为选项

我可以:

$row = mysql_fetch_assoc($result);
If($row['dept1'] == 'Yes') {
    $query. = " OR Department=dept1";
}
if($row['dept2'] == 'Yes') {
    $query. = " OR Department=dept2";
}

我想这会起作用,但这意味着如果我们要添加或删除一个部门等,我需要手动进入并硬编码一个部门。

有没有更优雅的解决方案?

4

2 回答 2

2

我认为没有更好的解决方案,但更清洁的解决方案如下:

  WHERE department IN (dept1,dept2,dept3...)

然后创建一个要包含的部门数组,然后将数组 implode() 转换为查询的“IN()”短语,如下所示:

    ... IN (implode(",", $array))
于 2012-11-26T14:57:35.630 回答
2

更好的方法是创建一个包含部门、经理映射的表。

然后您可以将查询更改为

WHERE department in (SELECT dept_id FROM table WHERE manager_id = 'something')
于 2012-11-26T14:58:23.990 回答