Присоединяйтесь к собственной таблице и получайте значения в новых строках - PullRequest
0 голосов
/ 21 ноября 2018

Интересно, есть ли способ присоединиться к собственной таблице и затем получить эти значения в новых строках.

Исходная таблица выглядит примерно так:

| id | slug    | parent_id |
|----|---------|-----------|
| 1  | one     | NULL      |
| 2  | two     | 1         | 

Я динамически генерируюэтот запрос из кода, который может содержать N количество операторов JOIN:

SELECT * FROM `permalinks` 
  INNER JOIN `permalinks` AS `permalinks1` 
    ON `permalinks`.`id` = `permalinks1`.`parent_id` 
        AND `permalinks1`.`slug` = 'two' 
  WHERE `permalinks`.`slug` = 'one'

Это производит:

| id | slug    | id | slug   |  
|----|---------|----|--------|
| 1  | one     | 2  | two    |

Однако я хотел бы получить:

| id | slug    |
|----|---------|
| 1  | one     |
| 2  | two     |

Можно ли получить все новые объединяемые значения в виде новой строки?

1 Ответ

0 голосов
/ 21 ноября 2018

Это можно сделать, используя один и тот же запрос дважды с незначительными изменениями и создавая строки после объединения

SELECT perm.Id, perm.slug FROM permalinks as perm
  INNER JOIN permalinks AS permalinks1 
    ON perm.id = permalinks1.parent_id 
        AND permalinks1.slug = 'two' 
  WHERE perm.slug = 'one'
  union
SELECT permalinks1.Id, permalinks1.slug FROM permalinks as perm
  INNER JOIN permalinks AS permalinks1 
    ON perm.id = permalinks1.parent_id 
        AND permalinks1.slug = 'two' 
  WHERE perm.slug = 'one';
...