오늘 최종 시험이 있습니다. 나는 행복하게 찬성했다. 그러나 문제 중 하나가 내 마음을 정말로 부 풀리고있다.테이블에 대한 쿼리가 자체와 결합되었습니다.
도움이 필요하므로 안심할 수 있습니다.
인한 문제
우리는 테이블 "사람"이
(PK)id | name | fatherID
---------------------
1 | gon | 2
2 | cesar| 6
3 | luz | 2
4 | maria| 5
5 | diego| 6
6 | john | -
이 데이터의 예입니다. 이 테이블은 자신과 테이블 ID (PK)가있는 fatherId (FK)와의 관계가 있습니다. 사람의 이름에 2 개의 열을 표시하고 다른 하나에는 그의/사촌.
여기까지 아주 간단합니다. 문제는 제한이 있다는 것입니다.
- ANSI 허용. 아니 T - SQL이나 다른 하나. 또한 ANSI 99 표준 (2003 또는 그 이상이 아님)
- 하위 쿼트는 허용되지 않습니다. 그리고 최악의 경우 :
- NO 관계가 반복됩니다.
예를 들어,이 예에서 gon과 maria는 사촌입니다. 결과에 gon | maria
이 표시되면 maria | gon
을 표시 할 수 없습니다.
그래, 내가 어떻게 할 수 있니? 정말 머리가 타오르는 중입니다.
나는 무엇을 시도 했습니까?
글쎄, 큰 문제는 마지막 요구 사항, 데이터의 반복에있었습니다. 나는 내 시험에서이를 넣어 무시 이번이 마지막 requeriment 해결되지 물론
select p3.name as OnePerson, p4.name as Cousin
from
people p1
inner join people p2 on p1.fatherid = p2.fatherid and p1.id != p2.id
inner join people p3 on p1.id = p3.fatherid
inner join people p4 on p1.id = p4.fatherid
(알고가 .. 잘못), 나는 어쨌든 테스트에서 4가 (우리가 4 패스)하지만, , 내 머리가 타오른다. 제발 도와주세요!
또 다른 옵션은 (*) 같은 시험을 한 내 친구의
하나,
는 "음, 모든 관계는 중복을 고려, 내가 최고 수를 사용할 수 있습니다 나에게 말했다 탐구 및 및 의한 주문은
Top
이ANSI
하지 않습니다 .. "
을 올바른 절반을 얻을 수 있지만!