SQL: новая строка результатов для каждого соединения - PullRequest
0 голосов
/ 29 июня 2019

Таблица следующая:

|child   | parent|

|John    |       |
|Ivan    | Ralph |
|Kat     | Ivan  |

Мне нужно получить по дочернему имени дочернюю родительскую запись и родительско-прародительскую запись.

например. по Кэт результат должен быть:

|Ivan    | Ralph |
|Kat     | Ivan  |

Попробовал с помощью этого запроса:

SELECT * FROM people AS c1
           LEFT JOIN people AS c2 ON c2.child = c1.parent WHERE c1.child = 'Kat'

Но он возвращает результат в виде одной строки.

|child   | parent| child   | parent|
|Kat     | Ivan  | Ivan    | Ralph |

Как мне составить запрос, чтобы он возвращал значения в новой строке?

1 Ответ

0 голосов
/ 29 июня 2019

Вам не нужно объединение, коррелированный подзапрос сделает:

SELECT * FROM people 
WHERE child = 'Kat' OR
child = (SELECT parent FROM people WHERE child = 'Kat')

при условии, что на каждого ребенка приходится только один родитель.
Если может быть больше родителей, тогда измените = на IN:

SELECT * FROM people 
WHERE child = 'Kat' OR
child IN (SELECT parent FROM people WHERE child = 'Kat')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...