在codeigniter中加入两个表?

时间:2014-02-26 10:22:44

标签: php codeigniter join

我想从两个表中获取数据,然后在我的结果集上通过desc应用顺序。我想知道codeiginter中查询的语法。我想将story_ratings表中的story_id与故事表的id匹配,然后根据最高评分对它们进行排序。这是我的查询:

$this->db->select('story_ratings.*,stories.*');
$this->db->from(' story_ratings');
$this->db->join('stories', 'story_ratings.story_id = stories.id', 'left'); 
$this->db->order_by('story_ratings.avg_rate','desc');
$query = $this->db->get();

3 个答案:

答案 0 :(得分:3)

最聪明的方法是使用1个函数中的所有函数,你可以将它放在帮助程序中,并根据需要从控制器传递你的参数。

function GetAllRecord($table_name='',$condition=array(),$join_table='',$table_id='',$join_id='',$is_single=false){
    $ci = & get_instance();
    #$ci->db->select('first_name,last_name');
    if($condition && count($condition))
        $ci->db->where($condition);
    $ci->db->from($table_name);
    if($join_table)
        $ci->db->join($join_table,"$table_name.$table_id = $join_table.$join_id");
    $res = $ci->db->get();
    if($is_single)
        return $res->row_array();
    else
        return $res->result_array();
}

答案 1 :(得分:2)

尝试此代码,我认为这将有效

$this->db->select('a.*,b.*');
$this->db->join('stories b', 'a.story_id = b.id', 'left'); 
$this->db->order_by('a.avg_rate','desc');
$query = $this->db->get('story_ratings a');

答案 2 :(得分:1)

试试这个..

  $query=$this->db->select('t1.*, t2.*')
 ->from('story_ratings as t1')   
 ->join('stories as t2', 't1.story_id = t2.id','left')
 ->order_by('t1.avg_rate','desc');   
 ->get();