CodeIgniter 查詢構造器(query builder) - 子查詢

最近開發項目時需要使用子查詢,研究一番後得出結果:

<?php

// Sub Query
$this->db->select('*');
$this->db->from('TableB');
$subQuery = $this->db->get_compiled_select();

// Main Query
$this->db->select('*');
$this->db->from('TableA');
$this->db->join("($subQuery) AS TableB", 'TableA.id = TableB.a_id');
$r = $this->db->get();
return $r->result_array();
?>

 

另外也發現一個情形:

TableA LEFT JOIN TableB on TableA.id=TableB.a_id,如果TableB有限制條件(ex. WHERE TableB.age > 15),需要使用子查詢的形式,否則會變成Inner Join。

-- 變成Inner Join
Select * 
From TableA 
     Left Join TableB on TableA.id = TableB.a_id
Where
     TableB.age > 15


-- Left Join正確的結果
Select * 
From TableA 
     Left Join (Select * From TableB TableB.age > 15) AS TableB on TableA.id = TableB.a_id
     

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章