나는 계층 적 테이블로 재귀 쿼리를 사용하는 방법을 알아 내려고하고있다. 주어진 레코드의 조상을 가져와야하며, 레코드는 계층 구조에서 레벨의 순서에 따라 정렬되어야합니다. 즉, 첫 번째 레코드가 최상위 노드 여야하며 그 다음 레코드는 질의되는 레코드의 하위 노드가되어야합니다.sqlite 재귀 조상 쿼리
다음 데이터가있는 "food"라는 테이블을 고려하십시오. 상위 레코드를 제외한 모든 레코드가 상위 레코드를 갖는 단순한 계층 구조입니다.
id | parent
-----------+---------
top |
fruit | top
red | fruit
cherry | red
apple | red
orange | fruit
clementine | orange
mandarin | orange
내가 함께 만다린 기록 자체를 포함하여 "만다린"레코드에 대한 모든 조상을 제공하는 다음 쿼리를 자갈길, 주제에 여러 웹 페이지를 이해하려고 노력. 수준 아래로
fruit
mandarin
orange
top
내가 기록을하고 싶습니다 먼저 최고 기록으로 분류 될 :
with recursive
child_record(id) as (
values('mandarin')
union
select parent
from food, child_record
where food.id = child_record.id
)
select id from food
where food.id in child_record;
그러나, 그 쿼리는 임의의 순서로 나에게 표시되는 내용의 레코드를 반환 만다린 기록에.
top
fruit
orange
mandarin
내가 원하는 순서대로 레코드를 제공하려면 어떻게 구성해야합니까?