0

我想知道如何检查表(经理)中是否存在值,然后根据该表中是否存在值添加“是”或“否”字符串。

$this->db->select('employees.first_name, employees.last_name, departments.department_name, departments.department_numb, titles.title');
            $this->db->from('employees');
            $this->db->where('first_name', $firstname);
            $this->db->where('last_name', $lastname);
            $this->db->join('department_manager', 'department_manager.emp_numb = employees.emp_numb', 'inner');
            $this->db->join('departments', 'departments.department_numb = department_manager.department_numb', 'inner');
            $this->db->join('titles', 'titles.emp_numb = employees.emp_numb', 'inner');
            $this->db->where('department_name', $dept);
            $this->db->where('title', $jobtitle);
            $result = $this->db->get();

            $data = array();
            foreach($result->result() as $row)
            {
                $entry = array();
                $entry['firstname'] = $row->first_name;
                $entry['lastname'] = $row->last_name;
                $entry['jobtitle'] = $row->title;
                $entry['dept'] = $row->department_name;
                $entry['deptid'] = $row->department_number;
                //$entry['ismanager'] = 

                $data[] = $entry;
            }
            return $data;

我想检查员工是否存在于'department_manager'由员工编号连接的表中。因此,如果表“department_manager”中不存在该员工编号,那么我想在数组索引中插入$entry[ismanager']一个表示“否”的字符串,如果员工编号存在于表“department_manager”中,那么我想$entry['ismanager']保留字符串“是”。

但我对如何检查该员工是否在该表中感到困惑。我是在活动记录查询中还是在 foreach 循环中执行此操作?如果它是在 foreach 循环中完成的,那么在查询完成时如何进行比较?

4

2 回答 2

1

如果您使用的是 MySQL,我认为您正在寻找:

IFNULL(expr1,expr2)

在哪里:

expr1 == null condition (in your case NULL)

expr2 == replacement value

来源:控制流函数

于 2012-12-12T21:28:18.543 回答
1

为什么有一个基本上是计算值的字段?这就像每个盒子的数量字段,盒子的数量,然后将总项目保存到第三个字段。永远不要将可以通过快速查询访问的内容保存到数据库中。在上面的查询中,就像将部门经理联接更改为左联接一样简单,包括部门经理 ID 并说明该字段在记录中是否为空白,则此人不是经理。使用 LEFT 连接将返回所有记录,无论它们是否在管理表中有条目。

添加:department_manager.emp_numb 到选择。

加入:

$this->db->join('department_manager', 'department_manager.emp_numb
= employees.emp_numb', 'left');

然后在foreach中:

if(!$row->department_manager.emp_numb)
 {
    this person is not a manager;
 } 

如果你觉得你真的必须有那个额外的字段,那么你仍然可以使用上面的方法填充它。

于 2012-12-13T02:51:38.600 回答