2012-06-10 5 views
1

여러 테이블에서 일부 사용자 정보를 가져와야하지만, 예를 들어 c.comp_title처럼 누락 된 것이 있으면 false가 반환됩니다. 발견 한 데이터를 반환하려면 어떻게해야합니까?모든 데이터를 찾지 못하면 Mysql 쿼리가 false를 반환합니다.

function one_edu($end_user, $one_id) 
    { 
    $query_str = "SELECT * 
       FROM edu a 
       JOIN user_profiles b ON a.user_id=b.user_id 
       JOIN (SELECT c.user_id, GROUP_CONCAT(c.comp_title) as comp_title, GROUP_CONCAT(c.comp) as comp 
        FROM comp c 
        GROUP BY c.user_id) c ON a.user_id = c.user_id 
       JOIN (SELECT s.user_id, GROUP_CONCAT(s.skill_title) as skill_title, GROUP_CONCAT(s.skill) as skill 
        FROM skills s 
        GROUP BY s.user_id) d ON a.user_id = d.user_id 
       JOIN (SELECT t.user_id, GROUP_CONCAT(t.exp_title) as exp_title, GROUP_CONCAT(t.experience) as experience 
        FROM exp t 
        GROUP BY t.user_id) e ON a.user_id = e.user_id 
       JOIN (SELECT e.user_id, GROUP_CONCAT(e.edu_title) as edu_title, GROUP_CONCAT(e.education) as education 
        FROM edu e 
        GROUP BY e.user_id) f ON a.user_id = f.user_id 
       WHERE a.user_id = ?"; 

      $query = $this->db->query($query_str, $end_user); 

      if($query->num_rows() > 0) 
        { 
        foreach($query->result_array() as $stuff) { 
          $data[] = $stuff; 
        } 
          return $data; 
        }else{ 
          return false; 
        } 

    }//end one_edu 

답변

1

SQL joins에 대해 자세히 알아보십시오. 외부 조인을 사용해야합니다. 조인 할 테이블에 일치하는 레코드가 있더라도 결과를 원하는 모든 위치에 을 바꿉니다 (앞에서 언급 한 테이블에 일치하는 레코드가없는 경우에도 결과를 얻으려면 RIGHT JOIN).

+0

감사합니다. LEFT JOIN이 (가) 트릭을했습니다. 매우 유용한 링크. – Ciprian

관련 문제