Codeigniter SQL查询在两个不同的列上联接

CodeGodie

我有以下表格:

使用者:

+----+-------+-------+
| ID | fname | lname |
+----+-------+-------+
| 1  | Joe   | Doe   |
+----+-------+-------+
| 2  | Jane  | Doet  |
+----+-------+-------+

产品:

+----+------+------------+------------+
| ID | name | created_by | updated_by | //created_by and updated_by are user Ids
+----+------+------------+------------+
| 1  | some | 1          | 1          |
+----+------+------------+------------+
| 2  | some | 1          | 2          |
+----+------+------------+------------+
| 3  | some | 2          | 2          |
+----+------+------------+------------+
| 4  | some | 2          | 1          |
+----+------+------------+------------+

我想创建一个查询,该查询输出下表:

+--------------+------------+------------+
| Product Name | Created By | Updated By |
+--------------+------------+------------+
| Some         | Jane Doet  | Joe Doe    |
+--------------+------------+------------+

到目前为止,我正在使用Join这种方式:

public function getAll() {
    $this->db->select('products.* , users.fname, users.lname');
    $this->db->from('products');
    $this->db->join('users', 'users.id = products.updated_by', 'left');
    $q = $this->db->get();
    return $q->result();
}

产生以下内容:

SELECT products.*, users.fname, users.lname 
FROM `products`
LEFT JOIN users ON users.id=products.updated_by

这样可以正常工作,并且可以获取updated_by用户信息,但是如果我同时需要createdupdated用户信息,该如何查询呢?

雷文德·雷迪(Ravinder Reddy)

我有残障,codeigniter但如果我理解您的要求正确,那么以下内容可能会有所帮助。

public function getAll() {
  $selqry = 'p.* , u.fname as fname_ub, u.lname as lname_ub'  
  $selqry .= ', c.fname as fname_cb, c.lname as lname_cb'  

  $this->db->select( $selqry );
  $this->db->from('products as p');
  $this->db->join('users u', 'u.id = p.updated_by', 'left');

  $this->db->join('users c', 'c.id = p.created_by', 'left');

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

  return $q->result();
}

上面的代码应产生以下SQL语句:

SELECT 
       p.*, u.fname as fname_ub, u.lname as lname_ub
       ,    c.fname as fname_cb, c.lname as lname_cb
FROM `products` as p
LEFT JOIN users u ON u.id=p.updated_by
LEFT JOIN users c ON c.id=p.created_by

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Codeigniter活动记录类联接两个mysql表

来自分类Dev

Codeigniter数据库在基于多个值的两列上联接

来自分类Dev

Codeigniter数据库查询以比较两个值

来自分类Dev

如何通过使用内部联接从codeigniter中的两个表中获取数据

来自分类Dev

从Codeigniter的两个表中选择“查询”

来自分类Dev

如何在CakePHP 3的多个列上联接两个表?

来自分类Dev

在一条记录上联接一个表的多行(Codeigniter 3)

来自分类Dev

在两列上联接表

来自分类Dev

在前缀和非前缀字段上联接两个表的SQL查询

来自分类Dev

在SQL Server上联接两个表

来自分类Dev

更新两个表Codeigniter

来自分类Dev

列数未知时如何在多列上联接两个表(pyspark)

来自分类Dev

SQL在时间戳上联接两个不同的表

来自分类Dev

Rails查询-如何在特定列上联接两个表

来自分类Dev

SQL联接codeigniter 4

来自分类Dev

更改子查询以在Oracle视图中的两列上联接

来自分类Dev

CodeIgniter两个表与最后一个具有可选行的表联接

来自分类Dev

在两个不同列上的MYSQL查询

来自分类Dev

Codeigniter数据库在基于多个值的两列上联接

来自分类Dev

在Codeigniter中管理两个角色

来自分类Dev

Codeigniter数据库查询以比较两个值

来自分类Dev

SQL在具有不同格式的两列上联接

来自分类Dev

在两列上联接表

来自分类Dev

在SQL Server中的两列上联接

来自分类Dev

在SQL Server上联接两个表

来自分类Dev

更新两个表Codeigniter

来自分类Dev

PHPExcel与CodeIgniter合并两个不同的列以得出结果

来自分类Dev

Codeigniter基于两个联接条件联接两个表

来自分类Dev

在多列上联接两个表,没有重复的行