2012-12-12 3 views
0

테이블 (관리자)에 값이 있는지 여부를 확인한 다음 해당 테이블에 값이 있는지 여부에 따라 '예'또는 '아니오'문자열을 추가하는 방법을 알고 싶었습니다 .쿼리 결과의 값이 null인지 아닌지 어떻게 확인합니까? - 활성 레코드 - CodeIgniter

$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 루프에서 수행되면 쿼리가 완료되면 어떻게 비교합니까? 당신이 MySQL을 사용하는 경우

답변

1

이유는 기본적으로 계산 된 값입니다 필드가 ? 그것은 상자 당 수량, 상자의 수량, 전체 품목을 세 번째 필드에 저장하는 것과 같습니다. 빠른 쿼리를 통해 액세스 할 수있는 데이터베이스를 절대로 데이터베이스에 저장하지 마십시오. 위의 쿼리에서 dept 관리자 ID를 포함하여 dept 관리자 조인을 왼쪽 조인으로 변경하고 해당 필드가 레코드에서 비어 있으면 사람이 관리자가 아님을 말하는 것처럼 간단합니다. 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; 
} 

당신이 정말 그 추가 필드가 있어야합니다 생각한다면 당신은 여전히 ​​위의 방법을 채울 수 있습니다.

+0

입력에 감사드립니다. 값의 유무를 확인하는 방법을 알아 냈습니다. 그러나 직원이 관리자가 아닌 경우 빈 JSON 문자열이 나타납니다. 그렇지 않으면 관리자 인 관리자를 반환합니다. 나는 이것을 달성하기 위해 사용했던 것과 비슷한 if 문을 사용했습니다. – a7omiton

+0

return 문이 json을 채우기로되어 있습니까? 그렇다면 작동하지 않습니다. print json_encode ($ data); 의지. –

+0

그래, 내 컨트롤러에서 json 인코딩을 했어. 이건 내 모델에서 생성 된거야. – a7omiton

1

, 나는 당신이 찾고있는 생각 :

IFNULL(expr1,expr2) 

여기서

expr1 == null condition (in your case NULL) 

expr2 == replacement value 

출처 : Control Flow Functions

+0

예 그랬지만 직원 번호가 'department_manager'테이블에없는 쿼리를 계산할 때 웬일인지 빈 JSON 개체가 생깁니다. 그 이유를 알아 내야 할 필요가 있습니다 .. – a7omiton

관련 문제