Self-join возвращает неверные / противоположные результаты? - PullRequest
1 голос
/ 28 марта 2019

Мне нужно использовать Self Join ниже таблицы, используя 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] => ) ) 

Почему это происходит?

1 Ответ

1 голос
/ 28 марта 2019

Попробуйте этот запрос, чтобы получить вывод в качестве второй таблицы

$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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...