我认为这可能是一个简单的问题,但我只是想想最有效的方式来做我想做的事。
我拥有的是一个允许经理在自己的部门内编辑用户的页面。 这在最基本的方面工作正常,我运行查询以返回所有用户WHERE Department = 经理部门。
这将返回同一部门内的所有用户。我想做的是扩展,因为一些经理负责几个部门,并希望能够编辑来自不同部门的用户。
我的想法是拥有一个部门表,其中包含一个用户条目。然后每个部门都会有一个列,我会将经理负责的每个部门的值设置为“是”。
然后棘手的部分是根据该信息调整查询。您认为查询行的最佳方式是什么,对于值为Yes的每个字段,在查询中添加部门作为选项
我能做到:
$row = mysql_fetch_assoc($result);
If($row['dept1'] == 'Yes') {
$query. = " OR Department=dept1";
}
if($row['dept2'] == 'Yes') {
$query. = " OR Department=dept2";
}
这可行我想象,但是如果我们要添加一个或删除一个等,我将需要手动进入并硬编码一个部门。
有更优雅的解决方案吗?
答案 0 :(得分:2)
我认为没有更好的解决方案,但更清洁的是:
WHERE department IN (dept1,dept2,dept3...)
然后你创建了一个你想要包含的部门数组,然后将数组内插()到查询的“IN()”短语中,如下所示:
... IN (implode(",", $array))
答案 1 :(得分:2)
更好的方法是拥有一个包含部门,经理映射的表。
然后您可以将查询更改为
WHERE department in (SELECT dept_id FROM table WHERE manager_id = 'something')