0

テーブル(マネージャー)に値が存在するかどうかを確認し、そのテーブルに値があるかどうかに応じて「yes」または「no」の文字列を追加する方法を知りたいと思いました。

$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']に'no'という文字列を挿入し、従業員番号がテーブル'department_manager'に存在する場合は$entry['ismanager']、文字列'yes'。

しかし、従業員がそのテーブルに存在するかどうかを確認する方法について私は混乱しています。アクティブレコードクエリまたはforeachループでそれを行いますか?そして、それがforeachループで行われる場合、クエリが完了したときにその比較を行うにはどうすればよいですか?

4

2 に答える 2

1

基本的に計算された値であるフィールドがあるのはなぜですか? これは、箱ごとの数量、箱の数量のフィールドを持ち、合計アイテムを 3 番目のフィールドに保存するようなものです。簡単なクエリでアクセスできるものをデータベースに保存しないでください。上記のクエリでは、部門マネージャーの結合を左結合に変更し、部門マネージャー 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 に答える
1

MySQL を使用している場合は、次のものを探していると思います。

IFNULL(expr1,expr2)

どこ:

expr1 == null condition (in your case NULL)

expr2 == replacement value

出典:制御フロー関数

于 2012-12-12T21:28:18.543 に答える