먼저 관계를 파악하기 위해 개념적인 모델을 그려보았다.
요구사항에 대해 정리해보자.
SELECT 관계.관계명, 사람.성명, 사람.사망여부, 사람.출생연월일, 사람.주민등록번호, 사람.성별, 사람.본
FROM 사람
INNER JOIN (SELECT 관계.가족번호 관계.관계명
FROM 관계
WHERE 관계.사람번호 = (SELECT P.사람번호 FROM 사람 AS P WHERE P.주민등록번호="*********")
AND 관계.상태코드 = TRUE)
ON 사람.사람번호 = 관계.가족번호;
SELECT 사람.사람번호 INTO @CHILD
FROM 사람
INNER JOIN (SELECT 관계.가족번호
FROM 관계
WHERE 관계.사람번호 = (SELECT P.사람번호 FROM 사람 AS P WHERE P.주민등록번호="*********")
AND 관계.관계명 = "자녀"
AND 관계.상태코드 = TRUE)
ON 관계.가족번호 = 사람.사람번호
WHERE 사람.성명 = "자녀이름";
SELECT 관계.관계명, 사람.성명, 사람.사망여부, 사람.출생연월일, 사람.주민등록번호, 사람.성별, 사람.본
FROM 사람
INNER JOIN (SELECT 관계.가족번호 관계.관계명
FROM 관계
WHERE 관계.사람번호 = @CHILD)
ON 사람.사람번호 = 관계.가족번호;
SELECT 사람.사람번호 INTO @FATHER
FROM 사람
INNER JOIN (SELECT 관계.가족번호
FROM 관계
WHERE 관계.사람번호 = (SELECT P.사람번호 FROM 사람 AS P WHERE P.주민등록번호="*********")
AND 관계.관계명 = "부"
AND 관계.상태코드 = TRUE)
ON 관계.가족번호 = 사람.사람번호;
SELECT 관계.관계명, 사람.성명, 사람.사망여부, 사람.출생연월일, 사람.주민등록번호, 사람.성별, 사람.본
FROM 사람
INNER JOIN (SELECT 관계.가족번호 관계.관계명
FROM 관계
WHERE 관계.사람번호 = (SELECT R.가족번호 FROM 관계 AS R WHERE R.사람번호 = @FATHER AND R.관계명 = "부" AND R.상태코드 = TRUE)
AND 관계.관계명 = "자녀"
AND 관계.상태코드 = TRUE)
ON 사람.사람번호 = 관계.가족번호;
SELECT 관계.관계명, 사람.성명, 사람.사망여부, 사람.출생연월일, 사람.주민등록번호, 사람.성별, 사람.본
FROM 사람
INNER JOIN (SELECT 관계.가족번호 관계.관계명
FROM 관계
WHERE 관계.사람번호 = (SELECT P.사람번호 FROM 사람 AS P WHERE P.주민등록번호="*********")
AND 관계.관계명 = "모")
ON 사람.사람번호 = 관계.가족번호;