2016-08-04 2 views
-1

두 개의 테이블이 있습니다 : 레이어 및 이미지포스트 그레스 SQL 재귀 쿼리

지금 알고 싶은
LAYERS (layer_id varchar PRIMARY KEY, 
     parent_id varchar REFERENCES LAYERS(layer_id)) 

IMAGES (image_id varchar UNIQUE, REFERENCES LAYERS(layer_id)) 

in LAYERS table: 1->2->3->4->5->6 (1 is the parent of 2) 
in IMAGES table: 1,2,5,6 

는 이미지 (5)의 가장 가까운 부모 이미지는 이미지입니다?
대답은 이미지 2

어떻게 그러한 SQL 쿼리를 작성합니까?
정말 고마워요!

+1

https://stackoverflow.com/questions/ [여기 ((https://www.postgresql.org/docs/current/static/queries-with.html) 및 [포스트 그레스 튜토리얼] 참조 tagged/postgresql + recursive-query) –

답변

0
WITH RECURSIVE parents(id) AS(
    SELECT parent FROM layers WHERE layerid = '5' 
    UNION 
    SELECT layers.parent FROM parents, layers WHERE layers.layerid = parents.id 
     AND parents.id NOT IN (SELECT imageid FROM images) 
) 
SELECT imageid FROM parents, images WHERE images.imageid = parents.id;