2013-11-26 2 views
0

계층 구조를 지정하는 parent_id 절이 포함 된 테이블이 "containers"입니다. 외래 키가 설치되지 않은 때문에 내가 NULL에 PARENT_ID을 설정하는 그들에게 아이를 업데이트하지 않고 삭제 된 부모 컨테이너를 찾기 위해 노력하고SQL에서 누락 된 레코드가 누락되었습니다.

TABLE containers { 
    id 
    parent_id 
    name 
} 

.

SELECT * FROM container c 
RIGHT JOIN container c2 ON c2.parent_id = c.id 
WHERE c.id IS NULL AND c2.parent_id IS NOT NULL 

올바른 쿼리는 무엇입니까?

답변

2

당신은 아마 이런 식으로 뭔가하고 싶은 것 (제공 ID 것은 PK 또는 NOT NULL입니다) : 거의

SELECT 
    parents.id 
FROM 
    container children 
    LEFT JOIN 
    container parents ON (parents.id = children.parent_id) 
WHERE 
    parents.id IS NULL; 
+0

, 그러나 루트 컨테이너이기 때문에 약간의 "부모"또한 NULL의 PARENT_ID 있습니다. – Xeoncross

+0

이 경우 문제가되지 않습니다 :). 문제는 "id"가 NULL 일 수 있습니다. – Jan

관련 문제