自联接返回错误/相反的结果?

问题描述 投票:1回答:1

我需要使用Codeigniter在表下使用自我加入。

+----------------------------+
| id | parent_id |  name     |
+----------------------------+
|  1 |  0        |  Ram      |
+----------------------------+
|  2 |  0        |  Alex     |
+----------------------------+ 
|  3 |  1        |  Sep      |
+----------------------------+ 
|  4 |  1        |  Mid      |
+----------------------------+ 
|  5 |  2        |  Seem     |
+----------------------------+
|  6 |  3        |  Julie    |
+----------------------------+

如何使用CodeIgniter查询获取如下所示的输出

+--------------------------------+
| id |  name     |  parent_name  |
+--------------------------------+
|  1 |  Ram      |     NULL      |
+--------------------------------+
|  2 |  Alex     |     NULL      |
+--------------------------------+
|  3 |  Sep      |     Ram       |
+--------------------------------+
|  4 |  Mid      |     Ram       |
+--------------------------------+
|  5 |  Seem     |     Alex      |
+--------------------------------+
|  6 |  Julie    |     Sep       |
+--------------------------------+

我使用别名来选择下面的数据。

$this->db->select('p.id as p_id, p.name as p_name, p_parent.name as parent_name');
$this->db->from('Product as p');
$this->db->join('Product as p_parent', 'p_parent.parent_id = p.id   ','LEFT ');
$results = $this->db->get()->result_array();

我得到多个阵列,但没有得到正确的结果。

Array ( 
 [0] => Array ( [p_id] => 1 [p_name] => ram [parent_name] => sep ) 
 [1] => Array ( [p_id] => 1 [p_name] => ram [parent_name] => Mid ) 
     . . . 
 [6] => Array ( [p_id] => 6 [p_name] => julie [parent_name] => ) ) 

为什么会这样?

php codeigniter self-join
1个回答
1
投票

尝试此查询以将输出作为第二个表

$this->db->select('p.id as id, p.name as name, p_parent.name as parent_name');
$this->db->from('Product as p');
$this->db->join('Product as p_parent', 'p.parent_id = p_parent.id  ','left');
$results = $this->db->get()->result_array();
© www.soinside.com 2019 - 2024. All rights reserved.