Php codeigniter从同一个表中选择联接两次

Php codeigniter从同一个表中选择联接两次,php,mysql,codeigniter,join,Php,Mysql,Codeigniter,Join,我有3个表,其中第一个是给用户的。在另外两个版本中,我有id_用户,用于创建产品的用户或创建活动的用户。如何使用两个用户名显示这两个表中的所有数据?我知道如何连接两个表,但第三,我连接了两次,我不知道如何连接。这是两个表的示例: $query=$this->db->select('*') ->from('activation') ->join('products','products.id_p

我有3个表,其中第一个是给用户的。在另外两个版本中,我有id_用户,用于创建产品的用户或创建活动的用户。如何使用两个用户名显示这两个表中的所有数据?我知道如何连接两个表,但第三,我连接了两次,我不知道如何连接。这是两个表的示例:

        $query=$this->db->select('*')
                ->from('activation')
                ->join('products','products.id_pro = activation.id_pro')
                ->order_by('id_key','DESC')
                ->get();

表激活有用户id为的列user_a,产品有用户id为的列user_p。有时是同一用户,有时不是。有什么帮助吗?

以下是我使用别名的方法。你也可以按自己的方式格式化

 $this->db->select('tb1.*,tb2.*,u.*');
 $this->db->join('table1name tb1','tb1.id = u.tb1_id');
 $this->db->join('table2name tb2','tb2.id = u.tb2_id');
 $this->db->order_by('u.id_key','DESC');
 $result = $this->db->get('User u')->result();
如果要在左连接和右连接之间进行更改,只需在连接函数中添加“left”或“right”

 $this->db->join('table1name pr1','pr1.id = u.tb1_id','right');
 $this->db->join('table2name tb2','tb2.id = u.tb2_id','right');

这将优先选择您的用户表。

以下是我使用别名的方法。你也可以按自己的方式格式化

 $this->db->select('tb1.*,tb2.*,u.*');
 $this->db->join('table1name tb1','tb1.id = u.tb1_id');
 $this->db->join('table2name tb2','tb2.id = u.tb2_id');
 $this->db->order_by('u.id_key','DESC');
 $result = $this->db->get('User u')->result();
如果要在左连接和右连接之间进行更改,只需在连接函数中添加“left”或“right”

 $this->db->join('table1name pr1','pr1.id = u.tb1_id','right');
 $this->db->join('table2name tb2','tb2.id = u.tb2_id','right');

这将首选您的用户表。

我不明白。假设我有3张桌子。第一个是产品,第二个是激活,第三个是用户。如何进行查询,其中我将获得一行,并连接所有3个表,但用户名从用户表调用两次(有时相同,有时不相同)?抱歉,我没有理解“但用户名从用户表调用两次”(有时是相同的,有时不是’部分。上面的查询将返回表1、表2和表3中所有列的行和数组。如果希望结果仅为最后一行,可以使用
->row()
而不是
->result()
。我不明白。假设我有3个表。第一个表是产品,第二个表是激活,第三个表是用户。如何进行查询,我将获得一行连接所有3个表,但用户名从用户表调用两次(有时相同,有时不相同)?对不起,我没有理解“但是用户名从用户表调用两次”(有时是相同的,有时不是’部分。上述查询将返回表1、表2和表3中所有列的行和数组。如果希望结果仅为最后一行,可以使用
->row()
而不是
->result()