2011-05-08 9 views
0

4 개의 테이블 (Type01, Type02, Type03, Type04)이 있습니다. 그들에는 다른 란이있다. Type01 테이블은 자식 테이블이 3 개인 하위 테이블 입니다 (subtype01, subtype02, subtype03). 그리고 1 대 1의 관계가 아이들과 함께 1 대 1의 관계를 가지고 있습니다 (부모의 각 레코드는, 자식 의 1 개의 레코드에 대응합니다). 나는 순서 (삽입 날짜)에 따라 관련 어린이를 포함하여 4 개의 모든 테이블에 대한 모든 레코드를 (보다 쉽게 ​​만들기 위해) 검색하려고합니다. 그래서 유형의 범용 ID를 가진 수퍼 테이블을 만들었습니다. 제발 그림을 참조하십시오.다중 계층을 포함하는 디자인에서 레코드 가져 오기

enter image description here

자, 테이블 Type01의 어린이를 포함한 4 개 테이블의 모든 레코드를 검색하기위한 SQL 쿼리는 무엇인가? 이것이 가장 효율적인 설계입니까 (공간 & 검색 속도)?

고마워요.

+0

남자. 죄송합니다 . 나는 이것에 대해 몰랐다. 정말 . 나 한테 설명해 줄래? 다시, 나는 그것을 모르고있다. – Roobah

+0

확인. 제발 대답 해줘. – Roobah

답변

1

보십시오 : 당신이 돌아 LEFT 모든 리프 노드 테이블에 대한 조인 추가 할 다양한 열에

SELECT Types.ID, COALESCE(SubType1.Name, Type2.Name, Type3.Name) as Name, 
    COALESCE(SubType2.Description, Type1.Description, Type2.Description) as Description, 
    ... 
FROM Types 
    LEFT JOIN SubType1 ON (Types.ID = SubType1.ID) 
    LEFT JOIN SubType2 ON (Types.ID = SubType2.ID) 
    ... 
WHERE ... 
ORDER BY Types.Insert_Date; 

채우기, 그리고 당신의 조건을 추가 할 수 있습니다.

+0

대단히 고마워요. – Roobah

관련 문제