下表如下:
|child | parent|
|John | |
|Ivan | Ralph |
|Kat | Ivan |
我需要通过一个孩子的名字来检索一个孩子-父母条目和一个父母-祖父母条目。
例如Kat的结果应该是:
|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 |
我应该如何构成查询,以便它在新行中返回完整内容?
答案 0 :(得分:0)
您不需要联接,相关的子查询即可:
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')