2017-03-06 15 views
0

このMySQLクエリがありますので、これをcodeigniterに変換する手助けをしてもらえますか?Codeigniter:関数の場所

select * 
    from projectskillslist ps 
    LEFT 
    JOIN empskillslist s 
    ON s.skillsID = ps.skillsID 
    LEFT 
    JOIN projects p 
    ON p.projectID = ps.projectID 
    where ps.skillsID IN (SELECT skillsID 
          FROM empwithskills 
         where empID='test'); 

私はこれを試しましたが、私はしたいと思っていませんでした。

$this->db->select("*"); 
     $this->db->from('projectskillslist ps'); 
     $this->db->join('empskillslist s', 's.skillsID = ps.skillsID', 'left'); 
     $this->db->join('projects p', 'p.projectID = ps.projectID', 'left'); 
     $this->db->where('ps.skillsID'); 
     $this->db->where_in("(SELECT skillsID FROM empwithskills where empID='$username')"); 
     $query = $this->db->get(); 
     $result = array(); 
     if ($query->num_rows() > 0) { 
      foreach ($query->result_array() as $row) { 
       $result[] = $row; 
      } 
      return $result; 
     } 
     return false; 
+0

また、CI – Tikky

答えて

0

クエリは、このようなものだった場合、あなたはCodeIgniterの中でそれを書き換えする方法を見つけ出すことができ... skill ids

select ps.name 
    , s.the 
    , p.rojects 
    , y.ou 
    , a.ctually 
    , w.ant 
    , r.eturned 
    from projectskillslist ps 
    LEFT 
    JOIN empskillslist s 
    ON s.skillsID = ps.skillsID 
    LEFT 
    JOIN projects p 
    ON p.projectID = ps.projectID 
    JOIN empwithskills x 
    ON x.skillsID = ps.skillsID 
where x.empID = 'test'; 
+0

で純粋なSQL構文を使用することもできますが、回答できます。しかし、私はどこに関数 –

+0

@ SyedMuhammadWaqasを使用したかったのですか? – Strawberry

0

最初のget配列その後、$this->db->where_in()以下.Likeでarrayを適用します。..

 $this->db->select('skillsID'); 
     $this->db->where('empID',$username); 
     $skillsIDs = $this->db->get('empwithskills')->result_array();//array of skills ids 

     $this->db->select("*"); 
     $this->db->from('projectskillslist ps'); 
     $this->db->join('empskillslist s', 's.skillsID = ps.skillsID', 'left'); 
     $this->db->join('projects p', 'p.projectID = ps.projectID', 'left'); 
     $this->db->where_in('ps.skillsID',$skillsIDs); 
     $query = $this->db->get(); 
     $result = array(); 
     if ($query->num_rows() > 0) { 
      foreach ($query->result_array() as $row) { 
       $result[] = $row; 
      } 
      return $result; 
     } 
     return false; 
0

この

$this->db->select("*"); 
    $this->db->from('projectskillslist ps'); 
    $this->db->join('empskillslist s', 's.skillsID = ps.skillsID', 'left'); 
    $this->db->join('projects p', 'p.projectID = ps.projectID', 'left'); 
    $this->db->where('ps.skillsID' in (SELECT skillsID FROM empwithskills where empID='$username'), NULL, FALSE); 
    $query = $this->db->get(); 
をお試しください
0
$this->db->select("*"); 
$this->db->from('projectskillslist ps'); 
$this->db->where('`ps.skillsID` IN (SELECT skillsID FROM empwithskills where empID=`test`)', NULL, FALSE); 
$CI->db->join('empskillslist s', 's.skillsID = ps.skillsID', 'left'); 
$CI->db->join('projects p', 'p.projectID = ps.projectID', 'left'); 
$query = $CI->db->get(); 

これは役に立ちますか?

0

は...

$query = $this->db->select('*') 
    ->join('empwithskills ews', 'ews.empID = '.$username, 'inner')   
    ->join('empskillslist s', 's.skillsID = ps.skillsID', 'left') 
    ->join('projects p', 'p.projectID = ps.projectID', 'left') 
    ->get('projectskillslist ps'); 

    if ($query->num_rows() > 0) { 
     return $query->result_array(); 
    } 
    return false; 

を試していませんが、あなたのスキーマを知らなくても難しい、動作するはずです。

0

単に$this->db->query()メソッドを使用して実行することができます。

$query = $this->db->query("select * 
        from projectskillslist ps LEFT JOIN empskillslist s 
         ON s.skillsID = ps.skillsID LEFT JOIN projects p 
         ON p.projectID = ps.projectID where ps.skillsID 
         IN (SELECT skillsID FROM empwithskills where empID='test')"); 
if ($query->num_rows() > 0) { 
    return $query->result(); 
}else{ 
    return FALSE; 
} 
関連する問題