2016-06-29 4 views
0

페이지 매김을 지원하기 위해 1에서 N까지의 관계가있는 여러 테이블을 포함하는 SQL 쿼리를 생성하고 있습니다.Postgresql join with limit

처음 10 부모를 얻으려면, 내가

SELECT * from parent p 
LEFT JOIN child c 
    ON c.parent_id = p.id 
LIMIT 10 

이 어떤 부모가 하나 이상의 자녀

가있는 경우 작동하지 않습니다하려고 노력

한 내가 할 수있는 대안은

SELECT * from parent LIMIT 10 into temp_p; SELECT * from temp_p p LEFT JOIN child c ON c.parent_id = p.id

입니다

이것은 매우 서툴 릅니다. 내가 뭘하고 싶은지

SELECT * from parent p LIMIT 10 
LEFT JOIN child c 
ON c.parent_id = p.id 

물론 물론 구문이 잘못되었습니다. PostgreSQL에 내가하고 싶은 것을 지원할 수있는 방법이 있는지 궁금합니다.

답변

2

사용 common table expression A :

WITH ten_parents AS (
    SELECT * from parent LIMIT 10) 
SELECT * 
    FROM ten_parents p 
    LEFT JOIN child c 
     ON c.parent_id = p.id 
+1

당신은 (에서 (부모 제한 10) P는 ... 'SELECT * FROM *'선택)을 CTE, 간단한 파생 테이블을 필요로하지 않습니다 단지뿐만 아니라 작동합니다. 물론 CTE가 잘못되었다는 것은 아닙니다. –