Codeigniter:从多个表中选择

时间:2010-05-05 15:23:58

标签: activerecord select codeigniter

如何从两个或多个表中选择行?

我正在为表单设置默认字段,我需要两个表中的值...

我目前的代码是:

    $this->CI->db->select('*');
    $this->CI->db->from('user_profiles');
    $this->CI->db->where('user_id' , $id);
    $user = $this->CI->db->get();
    $user = $user->row_array();
    $this->CI->validation->set_default_value($user);

7 个答案:

答案 0 :(得分:20)

“用户指南”中的示例应解释此:

$this->db->select('*'); // <-- There is never any reason to write this line!
$this->db->from('blogs');
$this->db->join('comments', 'comments.id = blogs.id');

$query = $this->db->get();

// Produces:
// SELECT * FROM blogs
// JOIN comments ON comments.id = blogs.id

请参阅“用户指南”中Active Record页面下的整个内容。

答案 1 :(得分:10)

只需将另一个表添加到“ - &gt; from()”方法即可。类似的东西:

 $this->db->select('t1.field, t2.field2')
          ->from('table1 AS t1, table2 AS t2')
          ->where('t1.id = t2.table1_id')
          ->where('t1.user_id', $user_id);

答案 2 :(得分:8)

我认为问题不在于如何从两个不同的表中显示值的连接 - 用户指南似乎无法解释这一点。

这是我的看法:

    $this->db->select('u.*, c.company, r.description');
    $this->db->from('users u, company c, roles r');
    $this->db->where('c.id = u.id_company');
    $this->db->where('r.permissions = u.permissions');
    $query = $this->db->get();

答案 3 :(得分:1)

我认为语法不正确。 您需要选择一条记录。我有两个表,并且我通过参数传递一个表的id,以及两个表的关系。

答案 4 :(得分:1)

试试这个

   $this->db->select('*')
            ->from('student')
            ->where('student.roll_no',$id)
            ->join('student_details','student_details.roll_no = student.roll_no')
            ->join('course_details','course_details.roll_no = student.roll_no');
   $query = $this->db->get();
   return $query->row_array();

答案 5 :(得分:0)

$SqlInfo="select a.name, b.data fromtable1 a, table2 b where a.id=b.a_id";
$query = $this->db->query($SqlInfo);

尝试这种方式,你可以添加一个名为c的第三个表,并在sql命令中添加一个'和'命令。

答案 6 :(得分:0)

  

///从“表1”的所有字段中选择,然后从表2中选择一个或多个字段...。

$this->db->select('table1.*, table2.name');
    $this->db->from('table1, table2');
    $this->db->where('table2.category_id = table1.id');
    $this->db->where('table2.lang_id',$id); // your where with variable
    $query = $this->db->get();
    return $query->result();